為數(shù)據(jù)庫(kù)添加外部緩存后的性能提升分析

數(shù)據(jù)庫(kù)

指持久化數(shù)據(jù)庫(kù),如

  • mysql
  • mongodb

緩存

指內(nèi)存型的數(shù)據(jù)存儲(chǔ),如

  • redis
  • memcached

一個(gè)良好的緩存策略需兼顧

  • 命中率
  • 緩存數(shù)據(jù)與數(shù)據(jù)庫(kù)數(shù)據(jù)的一致性

對(duì)命中率的兼顧

多大的命中率是好的?

用數(shù)學(xué)知識(shí)來分析這個(gè)問題,先設(shè)定幾個(gè)關(guān)鍵的參數(shù)

  • T(c):讀一次緩存所需時(shí)間
  • T(d):讀一次數(shù)據(jù)庫(kù)所需時(shí)間
  • G:緩存命中率

一次數(shù)據(jù)讀取所需的時(shí)間的期望值為:

T(c)*G + (T(c)+T(d))*(1-G)

增加數(shù)據(jù)庫(kù)緩存的目標(biāo)為提高數(shù)據(jù)讀取速度,可以歸結(jié)為一個(gè)表達(dá)式

T(c)*G + (1-G)*(T(c)+T(d)) < T(d)

等同于

T(c) - T(d)*G < 0

讀取速度提升的比值為

(T(d)*G - T(c))/T(d)

假如,T(d)=50ms,T(c)=10ms,G=0.6,讀取速度提升比值為

(50*0.6 - 10)/50 = 0.4

化為百分比也就是40%。

假如,T(d)=50ms,T(c)=10ms,G的值必須大于

G = T(c)/T(d) = 0.2

才能期望讀取速度得到提升。

可以看出

加入緩存不一定能夠提升讀取性能,這取決于緩存讀取速度、數(shù)據(jù)庫(kù)讀取速度以及緩存的命中率。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容