利用數據緩存機制提高智能設備應用程序的數據訪問性能

剛看了 Chris Tacke 的《Improving Data Access Performance with Data Caching》一文,回想起以前做過的一些項目,對數據緩存在提高數據訪問性能方面的作用頗有感受,跟大家分享一下。
我們在開發 MIS 項目時,要跟各種業務和數據在打交道。其中數據可以根據它們的用途,分爲業務數據和參考數據兩種。業務數據是業務的信息載體,如:採購進貨單、銷售出貨單、盤點單等。參考數據是業務數據組成部分,如:度量單位、顏色、城市等。參考數據在英文裏面通常叫 Lookup Data 或 Reference Data,它們是在系統中使用頻率很高的一類數據。因此,這類數據的訪問性能將會影響整個系統的用戶體驗。那麼,如何提高 lookup data 的訪問性能呢?
Chris Tacke 在他的文章中分析了三種數據訪問方式。前兩種訪問方式差不多,主要區別在於:第一種在每次訪問數據庫時都會打開和關閉數據庫連接;而第二種是在系統緩存一個數據庫連接對象,每次使用後不關閉它。我相信大家都會認爲第二種方式在頻繁訪問數據庫時性能更優,因爲打開一個數據庫連接是比較耗系統資源的。然而結果卻讓人出乎意料,這兩種方式的性能很接近,甚至第二種方式性能還更好。

測試結果1:

Device

Processor

Mean Execution (ms)*

OLDI SAM-L8

800MHz Geode x86

7.5 to 9.5

iCOP eBox 2300

200MHz Vortex86

47 to 52

Dell Axim x51

416MUz Intel PXA270

38 to 62


測試結果2:

Device

Processor

Mean Execution (ms)

OLDI SAM-L8

800MHz Geode x86

7.1 to 14.8

iCOP eBox 2300

200MHz Vortex86

51 to 52

Dell Axim x51

416MUz Intel PXA270

43 to 61


第三種方式利用數據緩存機制,在第一次獲取數據時,將數據加載到一個Hashtable中,然後再返回。以後就直接從緩存獲取數據。第三種方式的性能跟前面兩種相比差了十萬八千里呀!

Figure 1

測試結果3:

Device

Processor

Mean Execution (ms)

OLDI SAM-L8

800MHz Geode x86

0.0193 to 0.0201

iCOP eBox 2300

200MHz Vortex86

0.1014 to 0.1164

Dell Axim x51

416MUz Intel PXA270

0.0975 to 0.1437

在以前做過的一些項目中,也是採用了類似的緩存機制來提高數據訪問性能,效果確實明顯。不過,要特別注意緩存數據的更新問題!在更新了數據庫中的 lookup data 時,別忘了內存中的緩存數據也需要更新。

Chris Tacke 的文章還提供示例代碼和PDF格式下載:
Download the Source Code
Download the PDF

另外,Chris Tacke 說他們在那個項目中還開發了一個運行在 Windows CE 的輕量級 ASP.NET Web 服務器,用來展現報表,在後續文章中會詳細介紹它的實現,期待ing...  

發佈了96 篇原創文章 · 獲贊 1 · 訪問量 43萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章