当前位置: 首页 > article >正文

深度解析MySQL的刷脏机制

前言

今天天气挺好,看大家对MySQL系列这么感兴趣,继续来聊聊MySQL,在MySQL的InnoDB中Buffer Pool和LSN关系紧密相连,尤其在脏页管理和刷新过程中起着至关重要的作用。理解LSN如何同Buffer Pool协同工作,有助于深入掌握 MySQL 的写入优化机制及数据一致性保证。

Buffer Pool

Buffer Pool 是 InnoDB 的内存缓存区域,用于存放数据页、索引页、事务日志缓冲。用途说白了就是为了减少磁盘I/O,提高查询性能。
它是按页为单位进行管理的,每个页大小通常为16KB。它主要用于存取几种类型的数据:

  • 数据页:存储表中的行数据。
  • 索引页:存储表中的B+树索引。
  • Undo Log 页: 存储事务回滚信息。
  • 插入缓冲(insert buffer):用于优化二级索引插入操作,它的作用是通过延迟和批量处理二级索引的的写操作,减少随机I/O,从而提高性能。
  • 自适应哈希索引(Adaptive Hash Index): 提升热点查询性能。
  • 锁信息 (Lock Information): 存储行锁和表锁的元数据。

数据如何从磁盘加载到Buffer Pool流程

  1. MySQL客户端接收SQL查询请求数据,MySQL解析并确定需要访问的数据页。
  2. 检查所需的数据页是否已经在Buffer Pool中。如果在Buffer Pool中直接返回数据,减少磁盘I/O。如果不在Buffer Pool中就得从磁盘读取该数据页,并将其加载到Buffer Pool中。
  3. 如果Buffer Pool满了&#x

http://www.kler.cn/a/418552.html

相关文章:

  • 基于springboot中小型制造企业质量管理系统源码和论文
  • 在RockyLinux9.4上安装Microk8s
  • 前端入门指南:模块打包器是什么?模块打包器的工作原理与实践
  • 量化的8位LLM训练和推理使用bitsandbytes在AMD GPUs上
  • Spring Web MVC其他扩展(详解下)
  • ArraList和LinkedList区别
  • 11. 名称空间
  • 深入解析 MySQL 启动方式:`systemctl` 与 `mysqld` 的对比与应用
  • 【iOS】《Effective Objective-C 2.0》阅读笔记(一)
  • 力扣103.二叉树的锯齿形层序遍历
  • git clone超大仓库时报错:fatal: early EOF
  • centos挂载ntfs或exFAT格式硬盘
  • 系统监控——分布式链路追踪系统
  • AJAX一、axios使用,url组成(协议,域名,资源路径)查询参数和化简,错误处理,请求/响应报文,状态码,接口文档,
  • 动态规划(c基础)
  • 【大数据学习 | Spark调优篇】Spark之内存调优
  • 深度学习基础3
  • 匿名发帖/匿名论坛功能设计与实现(编辑发帖部分)
  • 乌班图单机(不访问外网)部署docker和服务的方法
  • 【React】全局状态管理(Context, Reducer)
  • 在Window10或11系统中同时安装 JDK8 和 JDK11
  • 使用Docker Compose安装WordPress(ARM/x86架构)
  • 六、Python —— 函数
  • CondaValueError: Malformed version string ‘~‘: invalid character(s).
  • 猜一个0到10之间的数字 C#
  • HHO-CNN-BiGRU-Attention哈里斯鹰优化算法卷积神经网络结合双向门控循环单元时间序列预测,含优化前后对比