剛看了 Chris Tacke 的
《Improving Data Access Performance with Data Caching》
一文,回想起以前做過(guò)的一些項(xiàng)目,對(duì)數(shù)據(jù)緩存在提高數(shù)據(jù)訪問(wèn)性能方面的作用頗有感受,跟大家分享一下。
我們?cè)陂_(kāi)發(fā) MIS 項(xiàng)目時(shí),要跟各種業(yè)務(wù)和數(shù)據(jù)在打交道。其中數(shù)據(jù)可以根據(jù)它們的用途,分為業(yè)務(wù)數(shù)據(jù)和參考數(shù)據(jù)兩種。業(yè)務(wù)數(shù)據(jù)是業(yè)務(wù)的信息載體,如:采購(gòu)進(jìn)貨單、銷售出貨單、盤點(diǎn)單等。參考數(shù)據(jù)是業(yè)務(wù)數(shù)據(jù)組成部分,如:度量單位、顏色、城市等。參考數(shù)據(jù)在英文里面通常叫 Lookup Data 或 Reference Data,它們是在系統(tǒng)中使用頻率很高的一類數(shù)據(jù)。因此,這類數(shù)據(jù)的訪問(wèn)性能將會(huì)影響整個(gè)系統(tǒng)的用戶體驗(yàn)。那么,如何提高 lookup data 的訪問(wèn)性能呢?
Chris Tacke 在他的文章中分析了三種數(shù)據(jù)訪問(wèn)方式。前兩種訪問(wèn)方式差不多,主要區(qū)別在于:第一種在每次訪問(wèn)數(shù)據(jù)庫(kù)時(shí)都會(huì)打開(kāi)和關(guān)閉數(shù)據(jù)庫(kù)連接;而第二種是在系統(tǒng)緩存一個(gè)數(shù)據(jù)庫(kù)連接對(duì)象,每次使用后不關(guān)閉它。我相信大家都會(huì)認(rèn)為第二種方式在頻繁訪問(wèn)數(shù)據(jù)庫(kù)時(shí)性能更優(yōu),因?yàn)榇蜷_(kāi)一個(gè)數(shù)據(jù)庫(kù)連接是比較耗系統(tǒng)資源的。然而結(jié)果卻讓人出乎意料,這兩種方式的性能很接近,甚至第二種方式性能還更好。
測(cè)試結(jié)果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 |
測(cè)試結(jié)果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 |
第三種方式利用數(shù)據(jù)緩存機(jī)制,在第一次獲取數(shù)據(jù)時(shí),將數(shù)據(jù)加載到一個(gè)Hashtable中,然后再返回。以后就直接從緩存獲取數(shù)據(jù)。第三種方式的性能跟前面兩種相比差了十萬(wàn)八千里呀!
測(cè)試結(jié)果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 |
在以前做過(guò)的一些項(xiàng)目中,也是采用了類似的緩存機(jī)制來(lái)提高數(shù)據(jù)訪問(wèn)性能,效果確實(shí)明顯。不過(guò),要特別注意緩存數(shù)據(jù)的更新問(wèn)題!在更新了數(shù)據(jù)庫(kù)中的 lookup data 時(shí),別忘了內(nèi)存中的緩存數(shù)據(jù)也需要更新。
Chris Tacke 的文章還提供示例代碼和PDF格式下載:
Download the Source Code
Download the PDF
另外,Chris Tacke 說(shuō)他們?cè)谀莻€(gè)項(xiàng)目中還開(kāi)發(fā)了一個(gè)運(yùn)行在 Windows CE 的輕量級(jí) ASP.NET Web 服務(wù)器,用來(lái)展現(xiàn)報(bào)表,在后續(xù)文章中會(huì)詳細(xì)介紹它的實(shí)現(xiàn),期待ing...
利用數(shù)據(jù)緩存機(jī)制提高智能設(shè)備應(yīng)用程序的數(shù)據(jù)訪問(wèn)性能
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
