InnoDB的LRU淘汰策略

2022-09-17 18:36:09 字數 532 閱讀 6992

reference:

innodb儲存引擎是基於集合索引實現的資料儲存,也就是除了索引列以及主鍵是儲存在b+樹之外,其它列資料也儲存在b+樹的葉子節點中。而這裡的索引頁和資料頁都會快取在緩衝池中,在查詢資料時,只要在緩衝池中存在該資料,innodb就不用每次都去磁碟中讀取頁,從而提高資料庫的查詢效能。

雖然緩衝池是乙個很大的記憶體區域,但由於存放了各種型別的資料,加上儲存資料量之大,緩衝池無法將所有的資料都儲存在其中。因此,緩衝池需要通過lru演算法將最近且經常查詢的資料快取在其中,而不常查詢的資料就淘汰出去。

innodb對lru做了一些優化,熟悉的lru演算法通常是將最近查詢的資料放到lru列表的首部,而innodb則是將資料放在乙個midpoint位置,通常這個midpoint為列表長度的5/8。

這種策略主要是為了避免一些不常查詢的操作突然將熱點資料淘汰出去,而熱點資料被再次查詢時,需要再次從磁碟中獲取,從而影響資料庫的查詢效能。

如果熱點資料比較多,可以通過調整midpoint值來增加熱點資料的儲存量,從而降低熱點資料的淘汰率。

redis 之 LRU 策略淘汰配置

redis lru cache可以通過引數maxmemory,在配置檔案redis.conf中設定,或者在redis服務啟動之後使用config set命令設定。例如在redis.conf中設定cache大小為100mb maxmemory 100mb maxmemory設定為0,表示cache大小...

快取淘汰策略 最近最久未使用策略(LRU)

快取位於記憶體中,而記憶體的空間很有限,所以快取也有乙個能使用的最大空間,當快取中的資料超過這個最大空間時,就要使用快取淘汰策略淘汰一些資料,空出空間給其他資料使用。最近最久未使用策略,優先淘汰最久未使用的資料,也就是上次被訪問時間距離現在最久的資料。該策略可以保證記憶體中的資料都是熱點資料,也就是...

mysql lur InnoDB的LRU淘汰策略

innodb儲存引擎是基於集合索引實現的資料儲存,也就是除了索引列以及主鍵是儲存在b 樹之外,其它列資料也儲存在b 樹的葉子節點中。而這裡的索引頁和資料頁都會快取在緩衝池中,在查詢資料時,只要在緩衝池中存在該資料,innodb就不用每次都去磁碟中讀取頁,從而提高資料庫的查詢效能。雖然緩衝池是乙個很大...