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

来聊一聊MySQL的Double write和Buffer Pool的关系

前言

MYSQL的存储引擎InnoDB 是一种支持事务的存储引擎,提供了高可靠的数据持久化能力。但是,磁盘I/O是以页为单位执行的,每个页通常大小为4KB。当修改页时,由于写入中断等原因造成缺页。那么缺页的后果是什么呢?

  1. 数据页中一部分是新内容,另一部分是旧内容。导致页结构不一致。
  2. 崩溃恢复阶段即使有redo log,由于页本身已损坏,redo log的应用可能失败,无法恢复一致性。
    因此,MYSQL一般采用Double Write方式解决缺页问题。

MySQL写表的核心组件

在写表流程中,以下组件发挥了核心作用:
1. InnoDB Buffer Pool
• 作用:内存中的缓冲区,用于缓存数据页,减少磁盘 I/O,提升性能。
• 特点:写操作首先更新 Buffer Pool 中的脏页,并不会立即写入磁盘。
2. Redo Log Buffer 和 Redo Log 文件
• 作用:记录事务的物理变更操作,用于崩溃恢复。
• 特点:在事务提交时将日志从内存刷新到磁盘,确保数据变更记录持久化。
3. Double Write Buffer
• 作用:解决磁盘写入中断引发的缺页(Partial Page Write)问题,提供额外的页保护机制。
• 特点:在将脏页写入表空间之前,先写入 Double Write Buffer,确保即使崩溃也能恢复数据。

写表流程

写入流程如图所示


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

相关文章:

  • 论文笔记(五十八)Trends and challenges in robot manipulation
  • SSM搭建(1)——配置MyBatis
  • 第 36 章 - Go语言 服务网格
  • redis机制详解
  • 【Vue3】【Naive UI】<n-message>标签
  • Java—Properties类
  • 3.27浮点数计算
  • [网络安全]sqli-labs Less-5 解题详析
  • Spring Cloud Gateway API 网关
  • 脉冲动画效果
  • 使用CLIP大模型实现视频定位:从理论到实践
  • 说说Elasticsearch拼写纠错是如何实现的?
  • C++设计模式之组合模式中如何实现同一层部件的有序性
  • Bug--python画图
  • 【湖北】湖北省省级信息化建设项目预算标准(鄂财预发〔2023〕40号)-费用标准解读系列22
  • 系统设计 总结
  • Stable Diffusion ControlNet基础
  • SpringBoot宠物领养服务:技术与创新
  • Facebook的开源项目解析:推动开发者社区的技术进步
  • 20241129解决在Ubuntu20.04下编译中科创达的CM6125的Android10出现找不到库文件