电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

淺析MySQL的lru鏈表

瀏覽:4日期:2023-10-08 15:34:38

一、簡述傳統的LRU鏈表

LRU:Least Recently Used

相信大家對LRU鏈表是不陌生的,它算是一種基礎的數據結構吧,而且想必面試時也被問到過什么是LRU鏈表,甚至是讓你手寫一個LRU鏈表。

如果你讀了上一篇:你有沒有搞混查詢緩存和BufferPool?談談看!

想必你已經知道了MySQL的Buffer Pool機制以及MySQL組織數據的最小單位是數據頁。并且你也知道了 數據頁在Buffer Pool中是以LRU鏈表的數據結構組織在一起的。

其實所謂的LRU鏈表本質上就是一個雙向循環鏈表,如下圖:

淺析MySQL的lru鏈表

下面我們結合LRU鏈表和數據頁機制描述一下MySQL加載數據的機制:

我們將從磁盤中讀取的數據頁稱為young page,young page會被直接放在鏈表的頭部。已經存在于LRU鏈表中數據頁如果被使用到了,那么該數據頁也被認為是young page而被移動到鏈表頭部。這樣鏈表尾部的數據就是最近最少使用的數據了,當Buffer Pool容量不足,或者后臺線程主動刷新數據頁時,就會優先刷新鏈表尾部的數據頁。

二、傳統LRU鏈表的不足

相信你之前肯定聽說過操作系統級別的空間局部性原理:

spatial locality(空間局部性):也就是說讀取一個數據,在它周圍內存地址存儲的數據也很有可能被讀取到,于是操作系統會幫你預讀一部分數據。

MySQL也是存在存在預讀機制的!

當Buffer Pool中存儲著一個區中13個連續的數據頁時,你再去這個區里面讀取,MySQL就會將這個區里面所有的數據頁都加載進Buffer Pool中的LRU鏈表中。(然后可能你根本不會使用這些被預讀的數據頁) 當你順序的訪問了一個區中大于 innndb_read_ahead_threshold=56個數據頁時,MySQL會自動幫你將下一個相鄰區中的數據頁讀入LRU鏈表中。(這個機制默認是被關閉的) 當你執行select * from xxx;時,如果表中的數據頁非常多,那這些數據頁就會一一將Buffer Pool中的經常使用的緩存頁擠下去,可能留在LRU鏈表中的全部是你不經常使用的數據。

綜上你可以看到,所謂的預讀機制的優勢,實際上違背了LRU去實現將最近最少使用的數據頁刷入磁盤的設計初衷。

三、MySQL的LRU鏈表

接下來我們看下MySQL的Buffer Pool是如何定制LRU鏈表的,已經LRU幫InnoDB解決了什么問題。

當業務進行大量的CRUD時,需要不斷的將數據頁讀取到buffer pool中的LRU鏈表中。

MySQL的LRU鏈表長下面這樣。

淺析MySQL的lru鏈表

LRU鏈表被MidPoint分成了New Sublist和Old Sublist兩部分。

其中New Sublist大概占比5/8,Old Sublist占比3/8。

New Sublist存儲著young page,而Old Sublist存儲著Old Page。

我們可以通過如下的方式查看MidPoint的默認值。

淺析MySQL的lru鏈表

用戶可以根據自己的業務動態的調整這個參數!

這其實是一種冷熱數據分離設計思想。他相對于傳統的LRU鏈表有很大的優勢

四、MySQL定制LRU鏈表的優勢而對于MySQLLRU鏈表來說,通過MidPoint將鏈表分成兩部分。

從磁盤中新讀出的數據會放在Old Sublist的頭部。這樣即使你真的使用select * from t;也不會導致New Sublist中的經常被訪問的數據頁被刷入磁盤中。

正常情況下,訪問Old Sublist中的緩存頁,那么該緩存頁會被提升到New Sublist中成為熱數據。

但是當你通過 select * from t 將一大批數據加載到Old Sublist時,然后在不到1s內你又訪問了它,那在這段時間內被訪問的緩存頁并不會被提升為熱數據。 這個1s由參數innodb_old_blocks_time控制。

另外:New SubList也是經過優化的,如果你訪問的是New SubList的前1/4的數據,他是不會被移動到LRU鏈表頭部去的。

以上就是淺析MySQL的lru鏈表的詳細內容,更多關于MySQL lru鏈表的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 金属回收_废铜废铁回收_边角料回收_废不锈钢回收_废旧电缆线回收-广东益夫金属回收公司 | 通信天线厂家_室分八木天线_对数周期天线_天线加工厂_林创天线源头厂家 | 合肥废气治理设备_安徽除尘设备_工业废气处理设备厂家-盈凯环保 合肥防火门窗/隔断_合肥防火卷帘门厂家_安徽耐火窗_良万消防设备有限公司 | 期货软件-专业期货分析软件下载-云智赢 | 温泉机设备|温泉小镇规划设计|碳酸泉设备 - 大连连邦温泉科技 | 连续密炼机_双转子连续密炼机_连续式密炼机-南京永睿机械制造有限公司 | 拉卡拉POS机官网 - 官方直营POS机办理|在线免费领取 | 上海平衡机-单面卧式动平衡机-万向节动平衡机-圈带动平衡机厂家-上海申岢动平衡机制造有限公司 | 东莞喷砂机-喷砂机-喷砂机配件-喷砂器材-喷砂加工-东莞市协帆喷砂机械设备有限公司 | 山东太阳能路灯厂家-庭院灯生产厂家-济南晟启灯饰有限公司 | 尚为传动-专业高精密蜗轮蜗杆,双导程蜗轮蜗杆,蜗轮蜗杆减速机,蜗杆减速机生产厂家 | 南京办公用品网-办公文具用品批发-打印机耗材采购 | 上海三信|ph计|酸度计|电导率仪-艾科仪器 | 单机除尘器 骨架-脉冲除尘器设备生产厂家-润天环保设备 | 蓝米云-专注于高性价比香港/美国VPS云服务器及海外公益型免费虚拟主机 | 进口试验机价格-进口生物材料试验机-西安卡夫曼测控技术有限公司 | 滚珠丝杆升降机_螺旋升降机_丝杠升降机-德迈传动 | 压砖机_电动螺旋压力机_粉末成型压力机_郑州华隆机械tel_0371-60121717 | 泰安办公家具-泰安派格办公用品有限公司 | 喷涂流水线,涂装流水线,喷漆流水线-山东天意设备科技有限公司 | 武汉森源蓝天环境科技工程有限公司-为环境污染治理提供协同解决方案 | 青岛侦探_青岛侦探事务所_青岛劝退小三_青岛婚外情取证-青岛王军侦探事务所 | 东莞螺杆空压机_永磁变频空压机_节能空压机_空压机工厂批发_深圳螺杆空压机_广州螺杆空压机_东莞空压机_空压机批发_东莞空压机工厂批发_东莞市文颖设备科技有限公司 | 钢制暖气片散热器_天津钢制暖气片_卡麦罗散热器厂家 | 湖南专升本-湖南省专升本报名-湖南统招专升本考试网 | BHK汞灯-百科|上海熙浩实业有限公司 | 对夹式止回阀厂家,温州对夹式止回阀制造商--永嘉县润丰阀门有限公司 | 一体化预制泵站-一体化提升泵站-一体化泵站厂家-山东康威环保 | 螺杆泵_中成泵业 | 桑茶-七彩贝壳桑叶茶 长寿茶| 细胞染色-流式双标-试剂盒免费代做-上海研谨生物科技有限公司 | 磨煤机配件-高铬辊套-高铬衬板-立磨辊套-盐山县宏润电力设备有限公司 | 巨野月嫂-家政公司-巨野县红墙安康母婴护理中心 | 上海租奔驰_上海租商务车_上海租车网-矢昂汽车服务公司 | 金属清洗剂,防锈油,切削液,磨削液-青岛朗力防锈材料有限公司 | 西点培训学校_法式西点培训班_西点师培训_西点蛋糕培训-广州烘趣西点烘焙培训学院 | 洛阳永磁工业大吊扇研发生产-工厂通风降温解决方案提供商-中实洛阳环境科技有限公司 | R507制冷剂,R22/R152a制冷剂厂家-浙江瀚凯制冷科技有限公司 | 紧急切断阀_气动切断阀_不锈钢阀门_截止阀_球阀_蝶阀_闸阀-上海上兆阀门制造有限公司 | 湖南教师资格网-湖南教师资格证考试网 | Brotu | 关注AI,Web3.0,VR/AR,GPT,元宇宙区块链数字产业 |