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

數(shù)據(jù)庫

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

  • mysql
  • mongodb

緩存

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

  • redis
  • memcached

一個良好的緩存策略需兼顧

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

對命中率的兼顧

多大的命中率是好的?

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

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

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

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

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

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ù)庫讀取速度以及緩存的命中率。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容