スレッド用、コメント用、および 2 つを接続する 1 つずつ、3 つの正規化されたテーブルがあるとします。
スレッド内のコメント数を表示したいのですが、それには特定のスレッドに属するすべてのコメントを見つけることが含まれます。
明らかに、ページを表示するたびにこのクエリを実行したくないので、コメントの数をスレッドにキャッシュする必要があります。私の2つのオプション(私が見ているように)は次のとおりです。
number_comments 行をスレッド テーブルに追加し、コメントを追加または削除するたびに更新します。
値をキャッシュするように mysql に指示するか、APC / memchached などを使用して、値をメモリにキャッシュします。
それぞれの長所/短所は何ですか?
最初のものは単純で、パフォーマンスが少し低いと思いますが、冗長性があり、ストレージはメモリよりもはるかに安価ですが、「動的」で常に変化する値でデータベースを台無しにします (また、私がコメントの「賛成票」を保存する必要があるため、この質問は複数の「動的」値に適用されます)。
2 つ目はパフォーマンスが向上しますが、新しいテクノロジが導入され、多くのことをキャッシュするためだけに関連付ける必要があります。
このプロジェクトのユーザー数は比較的少ないですが、訪問者の多いサイトよりもどちらが好ましいかを知りたいです(たとえば、Facebookはコメント数をどのように保存しますか[データベースとメモリの両方で推測しています])。