2009-07-28 15 views
2

OKソーシャルネットワークがあり、これまでに50,000人近くのユーザーがいて、このサイトの友人を示す友人テーブルがあります。このテーブルは100万行以上あります。非常に大きな配列のuserIDを複数のユーザーのセッション変数に保存できますか?

難しい部分ではありません掲示板、状態の投稿、友だちリストの人にしか見えないようなもの。 テーブルのサイズは約50,000回、友人テーブルは約100万であることを覚えておいてください。

1友人リストを取得してユーザーに表示する投稿のステータスを知る方法は以下のとおりです。

select friendid from friend_friend where userid=1 and status=1 

私は、カンマ区切りのリストにこの配列をオンにし、このユーザーが閲覧することが許可されている記事をフェッチmysqlのクエリのIN句でそれを使用する配列に結果を入れ

これまでのところ意味があることを願っています。

このクエリは非常に頻繁に実行されるため、このフレンド配列をセッション変数に保存するとどうなりますか? 私が見る欠点の1つは、ユーザーがログインしている間にそのユーザーを友人として追加すると、そのセッションがリセットされるまで友人として表示されますが、それ以外の場合は、メモリやセッションのパフォーマンスが悪くなりますつかいます?

はまた、時には最大500ユーザーがログインしている注意して、いくつかは万友人IDの友人リストを持っており、これは、それがファイルに保存されているPHP/MySQLのセットアップ

セッションデータについてのもう一つの問題であり、システムメモリが正しくありませんか?それがメモリではなくディスク上にある場合、メモリは大きな問題ではありませんか?

答えて

1

この問題に動的に対応したい場合があります。

ユーザーにX人以上の友人がいる場合は、キャッシュしないでください。ユーザーが多くの友達を持っていて、接続を通じてデータ全体をプッシュする必要があると考えてください...ユーザーは毎回リストを照会する必要があるときよりもパフォーマンスの低下が大きいと認識していると思います。

このPHP/MySQLでの私の経験に基づいて私の意見です...多分あなたはとにかく提案するもの^

よろしく

+0

をそれをチェックアウトしますおかげで実はそれは素晴らしいですアイデアと私はこれがどこに行くのかは確信しています – JasonDavis

関連する問題