2011-04-12 73 views
0

有點新的編程和有一個普遍的問題,我只是想到。動態或預先計算的數據

說,我有一個數據庫與一堆的股票信息和一列的價格和另一個收入。要獲得價格/收益率,最好是每天計算還是按需計算?我認爲性能明智,只讀會更快,但我想知道數學類型函數是否值得批處理作業進行預計算(它是否值得注意?)。

那麼專業人員如何做呢?讓應用程序爲他們處理數據還是讓它在數據庫中可用?

+0

沒有足夠的細節給出任何有意義的建議。抽象任務的抽象答案是 - 可能是值得的,也可能不值得。 – zerkms 2011-04-12 04:03:25

回答

2

專業人員使用各種方法。這完全取決於你要做什麼。是否需要立即顯示新的實際比率?核心數據多久變化一次?理想情況下,只有在價格或收益發生變化時才計算比率,但這需要額外的開發,如果網站上沒有大量活動,則可能不值得。另一方面,如果你每分鐘收到數百次訪問,你肯定會緩存你正在計算的任何內容,因爲重新顯示緩存結果所需的時間要少得多重新創建結果(在大多數情況下)。

然而,作爲一般的經驗法則,不要試圖優化您沒有預料到任何性能問題的東西。

+0

最後一段爲+1。 – zerkms 2011-04-12 04:06:30

+0

好吧,我想我明白了。讓它變得簡單,如果性能開始出現問題,然後優化。我對它進行了測試並計算了比率並輸出了300次,似乎很快......這讓我想到了存儲數據還是自己計算數據更好。我想我會計算它,並監視服務器的使用情況,如果它開始成爲一個問題,我會提前計算它。 – Lostsoul 2011-04-12 14:14:39

+0

這聽起來很不錯。 :) – 2011-04-12 14:21:40

1

將統計數據作爲獨立表保存爲只讀模式會很好。您可以直接使用SQL函數計算avarage,max,min值並保存它們。同時,對於當前時期(日期),您可以動態計算並顯示它。這些統計信息可用於報告或預測。

+0

最小值和最大值可以直接從索引中檢索。所以沒有理由存儲你已經有兩次的數據。 – zerkms 2011-04-12 04:02:54

+0

建議在表格中顯示最小值和最大值,如果需要監視變化的統計模式。 – Senthil 2011-04-12 04:08:42

1

預先計算的值(當然)更快。

但是,這一切都取決於需求本身。

  • 此值是否會頻繁調用?如果它經常被調用,那麼使用預先計算的值將帶來巨大的優勢。
  • 計算是否真的需要很長時間和/或巨大的資源?如果是這樣,使用預先計算將會有所幫助。

請記住,有時一個緩慢的過程或大量資源消耗是由編程實現本身造成的,而不是由錯誤設計的系統造成的。