mysql lur InnoDB的LRU淘汰策略

2021-10-18 20:24:58 字數 497 閱讀 1903

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

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

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

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

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

container of 的的的原理

另外一篇,同樣精彩,揭開linux核心中container of的神秘面紗 華清遠見嵌入式學院講師。在linux 核心中有乙個大名鼎鼎的巨集container of 這個巨集是用來幹嘛的呢?我們先來看看它在核心中是怎樣定義的。呵呵,乍一看不知道是什麼東東。我們先來分析一下container of p...

存在的就是合理的,發生的即是必然的。

筆者有時候會想,什麼是對,什麼是錯?對於追求某一件事情之前首先會考慮,為什麼我要做這件事情。所以經過自我分析和生活周邊環境的總結。我認為,對於乙個人來,這是在站在個體的角度上說。什麼是對的?就是你自己覺得是對的,它就是對的。不過這個只是你自己的想法。主觀上的正確,不代表客觀上也受到了別人的認可。就拿...

Apache的rewrite的重寫相關的引數

apache mod rewrite規則重寫的標誌一覽 使用mod rewrite時常用的伺服器變數 rewriterule規則表示式的說明 匹配任何單字元 chars 匹配字串 chars chars 不匹配字串 chars text1 text2 可選擇的字串 text1或text2 匹配0到1...