2012-08-05 87 views
1

我有以下情況(在Rails 3中):我的表包含每個用戶的財務事務(用戶可以購買和銷售產品)。由於發生了大量此類交易,我在網站上顯示與當前用戶有關的統計數據,例如,當前餘額,總體利潤,總共銷售/購買的產品數量,平均數等等(每月/每年的基礎上也是相同的,而不是整體)。這些信息的一部分會以多種形式/頁面顯示給用戶,以便用戶始終可以看到他當前的帳戶信息(不同的位統計信息顯示在不同的頁面上)。計算大量的數據庫用戶數據統計信息:優化性能

我的問題是:如何優化數據庫性能(是否值得)?當然,如果用戶只是瀏覽,那麼每次新頁面加載時都不需要重新計算所有的值,除非對底層數據庫進行了更改。

我的第一個解決方案是將這些統計數據存儲在他們自己的表中,並在財務事務添加/編輯後更新它們(在Rails中可能使用:after_update?)。進一步說,例如,如果新交易已經完成,那麼我可以修改平均值,而不是重新計算整個事情。

我的第二個想法是使用某種緩存(如果這是可能的?)或將這些值存儲在會話對象中。

哪一個是首選/推薦的方式,或者這是浪費時間,因爲當前最大數量的金融交易數量在7000-9000之間?

回答

0

您可能想調查彙總表,也稱爲物化視圖。

此鏈接可能會有所幫助:

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

+0

雖然只有9000交易這可能是沒有必要的。 – 2012-08-05 07:22:03

+0

謝謝,這正是我一直在尋找的。我試圖使用ActiveRecord回調,它也起作用,但隨後因爲潛在的可伸縮性問題而決定採用它們。在閱讀物化視圖時,我遇到了一本很棒的讀物「企業導軌」一書! – apotry 2012-08-13 12:33:02