MySQL Buffer Pool深度解析:当缓存页不足时如何基于LRU算法进行淘汰 - 详解

news/2026/1/18 20:28:31/文章来源:https://www.cnblogs.com/ljbguanli/p/19499054

MySQL Buffer Pool深度解析:当缓存页不足时如何基于LRU算法进行淘汰 - 详解

1. 问题引入:free链表空了怎么办?

在之前的文章中,我们详细讲解了MySQL Buffer Pool中缓存页的划分、free链表的管理,以及数据页从磁盘加载到缓存页的过程。今天我们来分析一个更实际的问题:当Buffer Pool中的空闲缓存页用完时,系统该如何处理?

1.1 缓存页耗尽的必然性

随着数据库持续运行,不断有数据页从磁盘加载到Buffer Pool中:

磁盘数据页 → 查找free链表 → 获取空闲缓存页 → 加载数据

当free链表耗尽时,新的数据页将无法加载,此时必须淘汰部分现有缓存页

2. 淘汰策略:该把谁"请"出内存?

2.1 什么是淘汰缓存页?

淘汰缓存页是指:

  1. 将被修改过的缓存页数据刷新到磁盘(如果它是脏页)
  2. 清空该缓存页
  3. 将其重新加入free链表,变为可用状态

这个过程确保了内存资源的循环利用,但引出一个关键问题:应该淘汰哪些缓存页?

3. 核心指标:缓存命中率

为了做出最优淘汰决策,MySQL引入了缓存命中率的概念:

场景访问频率命中率评估淘汰优先级
缓存页A100次请求中30次访问高命中率保留
缓存页B加载后仅访问1次,后续100次请求无访问低命中率优先淘汰

核心原则:优先淘汰"占着茅坑不拉屎"的缓存页——即那些长期不被访问却占用内存资源的页面。

4. LRU链表:智能淘汰的指挥官

4.1 LRU基本概念

MySQL通过LRU链表(Least Recently Used,最近最少使用)来实现智能淘汰:

工作原理:最近被访问的缓存页移动到链表头部,久未访问的页面自然沉降到尾部。

4.2 LRU链表运作机制

数据加载时

当从磁盘加载数据页到缓存页:

  • 将该缓存页的描述信息块放入LRU链表头部
  • 表示这是最新被使用的页面
[新加载的缓存页] → LRU Head → ... → LRU Tail
数据访问时

当查询或修改某个已存在的缓存页:

  • 无论该缓存页在LRU链表的哪个位置
  • 立即将其移动到链表头部
  • 表示它刚被访问过,近期可能再次被访问
LRU Tail中的缓存页被访问 → 移动到LRU Head
淘汰决策时

当需要腾出空闲缓存页:

  • 直接从LRU链表尾部选取
  • 尾部的页面就是"最近最少使用"的页面
  • 将其刷新到磁盘后清空

5. 技术图解

图1:free链表耗尽的场景

Buffer Pool (128MB)
┌─────────────────────────────────────┐
│ [数据] [数据] [数据] ... [数据]          │
│ 缓存页  缓存页  缓存页      缓存页      │
└─────────────────────────────────────┘▲│ 无法加载新数据页│
磁盘文件 ────────────→ X (无空闲缓存页)

图2:LRU链表驱动的淘汰流程

1. 识别LRU链表尾部页面(最少使用)↓
2. 如果是脏页,刷新到磁盘↓
3. 清空缓存页,加入free链表↓
4. 加载新数据页到腾出的空间↓
5. 新页面插入LRU链表头部

6. 思考题解答:表/行 vs 表空间/数据页

问题:SQL中的表、行与表空间、数据页之间是什么关系?

答案

  • 逻辑概念:表、列、行——面向开发者的抽象,关注数据结构
  • 物理概念:表空间、数据页——面向存储的实现,关注数据在磁盘的组织方式

类比

就像你看一本书,只关注"章节"和"段落"(逻辑),而不必关心"纸张"和"印刷墨迹"(物理)。数据库自动将逻辑结构映射为物理存储。

7. 总结要点

  1. free链表耗尽是常态:持续的数据加载必然导致空闲页用完
  2. LRU是淘汰依据:通过访问时间戳智能判断页面热度
  3. 头部-尾部机制:热点数据在头部,冷数据自然沉降尾部
  4. 性能保障:确保内存中保留的都是高价值数据,最大化缓存命中率

系列预告:下一篇文章将深入探讨MySQL LRU算法的优化细节,包括如何解决"全表扫描污染缓存"等经典问题。

参考资料:《MySQL专栏》

版权说明:本文内容整理自狸猫技术窝MySQL专栏,仅供学习交流使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1179329.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

内存管理-MMU

MMU(Memory Management Unit,内存管理单元) 是 CPU 中负责虚拟内存与物理内存管理的专用硬件模块,位于 CPU 与主存之间。 MMU 的一个重要功能,是让你能将任务作为独立程序管理 —— 这些程序会运行在各自专属的虚…

1.18假期记录

今天继续教资科目二到学习,以及了解寒假生活指导中的智能体、大模型的知识准备深入研究

区间dp

一、核心思想与适用题型 核心思想 区间DP的核心是将问题分解为子区间求解,通过解决子区间的最优解来构建整个区间的最优解。其基本思路是:定义状态表示区间[i, j]的属性通过枚举分割点将大区间划分为两个或多个子区间…

STM32-S57-烟雾浓度+温度+人体防盗报警+水泵+风扇+TFT彩屏+阈值+声光报警+(无线方式选择)(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

STM32-S57-烟雾浓度温度人体防盗报警水泵风扇TFT彩屏阈值声光报警(无线方式选择)(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码STM32-S57N无无线-无APP板: STM32-S57B蓝牙无线-APP版: STM32-S57W-WIFI无线-APP版: STM32-S57C…

综述《导航定位与授时》封面丨飞行器视觉导航新时代——从地形匹配到空间智能 - MKT

综述《导航定位与授时》封面丨飞行器视觉导航新时代——从地形匹配到空间智能 https://mp.weixin.qq.com/s/TH24qu1fDlMkRSr4e8z7zw《导航定位与授时》2025年第3期封面文章由北京自动化控制设备研究所尚克军研究员等完…

STM32-S184-车位感应+停车引导+闸道控制+车道防夹+计时计费+结算+OLED屏+声光报警+按键+(无线方式选择)(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫

STM32-S184-车位感应停车引导闸道控制车道防夹计时计费结算OLED屏声光报警按键(无线方式选择)STM32-S184N无无线-无APP板(硬件操作详细): STM32-S184B蓝牙无线-APP版: STM32-S184W-WIFI无线-APP版: STM32-S184CAN-视频监控WIFI无线-APP版: STM32-S184I-云平台-APP版: 产品功能描…

AI Agent在智能新闻事件检测中的应用

AI Agent在智能新闻事件检测中的应用 关键词:AI Agent、智能新闻事件检测、自然语言处理、机器学习、信息抽取 摘要:本文深入探讨了AI Agent在智能新闻事件检测中的应用。随着新闻信息的爆炸式增长,传统的新闻事件检测方法面临诸多挑战,而AI Agent凭借其强大的自主学习、推…

【六杆】基于matlab六杆快速回归机制运动学和动力学分析【含Matlab源码 14990期】

💥💥💥💥💥💥💞💞💞💞💞💞💞💞欢迎来到海神之光博客之家💞💞💞&#x1f49…

应用——基于 51 单片机的多功能嵌入式系统

基于 51 单片机的多功能嵌入式系统代码分析笔记一、项目概述本项目是一个基于 8051 单片机的嵌入式系统,实现了 UART 通信、LED 控制、数码管显示、蜂鸣器频率控制、DS18B20 温度传感器读取等多种功能。系统采用模块化设计,通过自定义的通信协议接收命令…

2026国产时序数据库:格局演变下金仓融合多模架构的差异化突围

2026年国产时序数据库盘点:格局嬗变下的多模态融合新锐摘要:进入2026年,在“数字中国”与工业物联网浪潮的强劲推动下,国产时序数据库市场持续繁荣,竞争格局日趋清晰。本文将对当前主流的国产时序数据库进行梳理盘点&a…

面试 Java 基础八股文十问十答第十四期

面试 Java 基础八股文十问十答第十四期 作者:程序员小白条,个人博客 相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新! ⭐点赞⭐收藏⭐不迷路!⭐ 1)为什么要有 hashCode…

深度测评8个一键生成论文工具,MBA论文写作必备!

深度测评8个一键生成论文工具,MBA论文写作必备! 1.「千笔」—— 一站式学术支持“专家”,从初稿到降重一步到位(推荐指数:★★★★★) 在众多AI论文生成工具中,「千笔」以其强大的功能和精准的算…

【机翼】基于matlab三维机翼几何进行耦合静态气弹性分析【含Matlab源码 14991期】

💥💥💥💥💥💥💞💞💞💞💞💞💞💞欢迎来到海神之光博客之家💞💞💞&#x1f49…

医疗数据用KNN插补稳缺失值

📝 博客主页:jaxzheng的CSDN主页 医疗数据缺失值的稳健KNN插补:技术深度与实践挑战目录医疗数据缺失值的稳健KNN插补:技术深度与实践挑战 引言:医疗数据缺失的隐性危机 一、KNN插补:原理与医疗场景的特殊性…

深度测评8个AI论文平台,继续教育学生轻松搞定毕业论文!

深度测评8个AI论文平台,继续教育学生轻松搞定毕业论文! AI 工具助力论文写作,让学术之路更轻松 在当今快节奏的学习环境中,继续教育学生面临着越来越大的学术压力,尤其是毕业论文的撰写。传统的写作方式不仅耗时费力&a…

【案例】某零售品牌AI驱动的库存与品牌营销联动系统:架构师的设计思路

零售智能新纪元:AI驱动的库存与品牌营销联动系统架构设计与实践 元数据框架 标题:零售智能新纪元:AI驱动的库存与品牌营销联动系统架构设计与实践 副标题:从数据孤岛到决策协同:构建零售企业的智能神经中枢 关键词:零售AI架构 | 库存优化系统 | 营销协同决策 | 需求预…

【飞机】基于matlab倾转旋翼飞机齿轮箱建模与仿真(含非线性阻尼和立方摩擦效应)【含Matlab源码 14988期】

💥💥💥💥💥💥💞💞💞💞💞💞💞💞欢迎来到海神之光博客之家💞💞💞&#x1f49…

LangGraph详解:构建智能代理工作流的新范式

目录 前言 什么是LangGraph? 核心概念 主要特性 与传统链式调用的对比 开始使用: LangGraph核心架构 状态管理 节点与边 条件边与循环 实战案例:构建智能客服工单处理系统 案例需求分析 系统实现 步骤1:定义状态结构…

web手势剑阵(开源)

项目源码:「剑阵网页」 链接:https://pan.quark.cn/s/4c489fd6cc2c基于Three.js和MediaPipe手势识别技术打造的交互式3D剑阵演示项目。通过摄像头捕捉用户手势,实时控制数百把飞剑形成不同的剑阵形态,创造出震撼的视觉效果。核心特…

【机翼】三维机翼几何进行耦合静态气弹性分析【含Matlab源码 14991期】

💥💥💥💥💥💥💥💥💞💞💞💞💞💞💞💞💞Matlab武动乾坤博客之家💞…