1. 程式人生 > >影響快取的三個因素(命中率、快取更新策略、快取最大資料量)

影響快取的三個因素(命中率、快取更新策略、快取最大資料量)

我們經常通過命中率來衡量快取機制的好壞和效率,這個命中率指的就是請求快取次數和快取返回正確結果的次數的一個比例,這個比例越高,就表明快取的使用率越高。

正常的快取命中率也會因為不同的快取應用而大不相同,咱們以query cache為例來說明一下,經過伺服器一段時間的執行和積累,query cache的命中率在98%以上,而另外的能在85%就算是很高了,這個跟我們的快取機制的實現有關係,一般來說,越複雜的快取機制,越難以保證命中率,隨著系統的積累,快取命中率會逐漸增長至穩定狀態。

我們需要注意的是,就是不要頻繁的更新快取資料,這樣會降低命中率,如果不得不做的話,就得考慮快取在這裡是否合理了。

快取更新策略一般有以下三種:

  1. FIFO(first in first out),也就是說,最先進入快取的資料,在快取空間不夠的情況下,將會被先清除
  2. LFU(less frequently used),這裡是說,最少使用的元素會先被清理,這裡需要標記元素使用情況
  3. LRU(least recently used),這個說的是最近最少使用的元素會先被清理,需給元素標記時間戳,距離當前時間最遠的元素,將會先被清理

快取最大資料量是指在快取中能處理元素的最大個數或者說所能使用的最大空間。通常來講,各種快取機制都會對快取的最大資料量進行限制,可以是固定大小的儲存空間、集合個數,或者是由作業系統所能處理和分配的儲存空間決定。

而超過快取機制所允許的最大資料量,系統會進行相應的處理,一般有四種處理方式:

  1. 停止快取服務,把所有的快取資料清空
  2. 拒絕寫入,不再對快取資料進行更新
  3. 根據快取更新策略,清除舊資料
  4. 在第三點的基礎上,將淘汰的資料備份,騰出新的空間

好啦,咱們也不廢話,今天的記錄就到這裡了。

如果感覺不錯的話,請多多點贊支援哦。。。