InnoDB LRU

      網友投稿 705 2025-04-03

      innodb 對 Bufffer Pool 的 LRU 算法做了優化,即:第一次從磁盤讀入內存的數據頁,會先放在 old 區域。如果 1 秒之后這個數據頁不再被訪問了,就不會被移動到 LRU 鏈表頭部,這樣對 Buffer Pool 的命中率影響就不大。


      LRU:淘汰最久未使用的數據。

      InnoDB LRU

      innodb 實現上,按照 5:3 的比例把整個 LRU 鏈表分成了 young 區域和 old 區域。

      LRU_old 指向的就是 old 區域的第一個位置,是整個鏈表的 5/8 處。

      靠近鏈表頭部的 5/8 是 young 區域,靠近鏈表尾部的 3/8 是 old 區域。

      //在 young 區域,因此和優化前的 LRU 算法一樣。

      //新插入的數據放入到LRU_OLD處,Old list 存儲那些低頻使用的數據(默認占整個BUFFER的3/8)

      //Old list內的任何一個塊數據被再次訪問,innodb都會把它加入到Young list的頭部。

      --?innodb_old_blocks_time 控制的

      這個參數用來表示 頁讀取到mid位置后,需要等待多久才會被加入到LRU列表的熱端。

      使LRU列表中的熱點數據不被刷出:

      set global innodb_old_blocks_time=1000;

      1

      放在冷熱數據交界處,默認1000ms,過了這1s,還能存活下去,就調到熱數據區了。

      若存在時間超過了1秒,移動到鏈表頭部。

      #######################

      掃描 200G 的歷史數據表為例:

      掃描過程中,需要新插入的數據頁,都被放到 old 區域 ;

      一個數據頁里面有多條記錄,這個數據頁會被多次訪問到,但由于是順序掃描,這個數據頁第一次被訪問和最后一次被訪問的時間間隔不會超過 1 秒,因此還是會被保留在 old 區域;

      再繼續掃描后續的數據,之前的這個數據頁之后也不會再被訪問到,于是始終沒有機會移到鏈表頭部(也就是 young 區域),很快就會被淘汰出去。可以看到,這個策略最大的收益,就是在掃描這個大表的過程中,雖然也用到了 Buffer Pool,但是對 young 區域完全沒有影響,從而保證了 Buffer Pool 響應正常業務的查詢命中率。

      MySQL

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:高級查找(高級查找的快捷鍵)
      下一篇:Jupyter工具系列之Notebook快速入門
      相關文章
      日本亚洲中午字幕乱码| 亚洲成a∨人片在无码2023 | 亚洲bt加勒比一区二区| 国产亚洲精品拍拍拍拍拍| 日韩精品亚洲专区在线影视| 亚洲砖码砖专无区2023| 亚洲中文字幕AV在天堂| 亚洲视频网站在线观看| 亚洲美女一区二区三区| 亚洲精品在线免费看| 亚洲熟妇无码爱v在线观看| 亚洲电影在线播放| 亚洲乱码一区av春药高潮| 亚洲一卡二卡三卡四卡无卡麻豆| 亚洲国产成人久久| 亚洲AV无码无限在线观看不卡| 亚洲欧洲日韩极速播放| 亚洲精品色播一区二区| 亚洲av永久无码精品秋霞电影秋 | 亚洲熟妇无码AV不卡在线播放| 亚洲综合无码无在线观看| 亚洲男同gay片| 亚洲av永久无码精品秋霞电影秋| 日韩亚洲翔田千里在线| 亚洲精品视频在线看| 久久精品国产亚洲Aⅴ香蕉| 亚洲尤码不卡AV麻豆| 久久香蕉国产线看观看亚洲片| 亚洲国产二区三区久久| 亚洲精品免费在线| 国产精品亚洲片夜色在线| 亚洲AV无码成人精品区狼人影院| 在线亚洲精品视频| 久久精品国产亚洲5555| 亚洲AV日韩AV永久无码绿巨人| 亚洲韩国在线一卡二卡| 亚洲粉嫩美白在线| 亚洲国产成人久久综合区| 亚洲色偷偷偷鲁综合| 亚洲视频国产精品| 亚洲中文字幕无码久久2020|