Ruby on Rails サイトに取り組んでいます。
パフォーマンスを向上させるために、さまざまな統計のキャッシュをいくつか構築して、将来それらを表示するときに、すべてのデータベース レコードを取得してそれらの統計を計算するのではなく、キャッシュを表示するだけでよいようにしたいと考えています。
例:
モデル ユーザー has_many コメント。コメントの数をユーザー キャッシュ モデルに保存したいと思います。そうすれば、ユーザーが行ったコメントの数を表示する必要がある場合、それは統計モデルの単純なクエリだけです。新しいコメントが作成または破棄されるたびに、カウンターが増減するだけです。
サイトの稼働中にこれらの統計を作成するにはどうすればよいですか? 私が懸念しているのは、データベースにユーザーのコメント数をカウントするように要求した後、コマンドを実行して統計に保存する前に、そのユーザーが忍び込んで別のコメントをどこかに追加する可能性があることです。これによりカウンターがインクリメントされますが、すぐに他のスレッドによって上書きされ、誤った統計が保存されます。
私は ActiveRecord トランザクション ブロックに精通していますが、理解しているように、それらはデータベース上のデータのミューテックス保護として機能するのではなく、全体としてすべてまたはまったく成功しないことを保証するためのものです。
このような変更のために、基本的にサイトを削除する必要がありますか?