1

私は次の状況にあります(Rails 3):私のテーブルには各ユーザーの金融取引が含まれています(ユーザーは製品を売買できます)。そのようなトランザクションがたくさん発生するので、現在のユーザーに関連する統計をWebサイトに表示します。たとえば、現在の残高、全体的な利益、全体として販売/購入した製品の数、平均などです(代わりに月/年ベースでも同じです)。全体の)。この情報の一部は多くのフォーム/ページでユーザーに表示されるため、ユーザーは常に現在のアカウント情報を確認できます(ただし、統計のさまざまなビットがさまざまなページに表示されます)。

私の質問は、データベースのパフォーマンスをどのように最適化できるか(そしてそれだけの価値があるか)です。確かに、ユーザーが閲覧しているだけの場合、基になるデータベースに変更が加えられていない限り、新しいページが読み込まれるたびにすべての値を再計算する必要はありませんか?

私の最初の解決策は、これらの統計を独自のテーブルに保存し、金融取引が追加/編集されたら更新することです(Railsではおそらく:after_update?を使用しています)。これをさらに進めると、たとえば、新しいトランザクションが行われた場合、全体を再計算するのではなく、平均を変更するだけで済みます。

私の2番目のアイデアは、ある種のキャッシュを使用するか(これが可能な場合)、またはこれらの値をセッションオブジェクトに格納することです。

現在の最大の金融取引数は7000から9000の範囲にあるため、どちらが推奨/推奨される方法ですか、それともこれらすべてが時間の無駄ですか?

4

1 に答える 1

0

マテリアライズド・ビューとも呼ばれるサマリー表を調査することをお勧めします。

このリンクは役立つかもしれません:

http://wiki.postgresql.org/wiki/Materialized_Views

于 2012-08-05T07:21:08.117 に答える