
一句话概括,Checkpoint技术就是将缓存池中脏页在某个时间点刷回到磁盘的操作

都知道缓冲池的出现就是为了解决CPU与磁盘速度之间的鸿沟,免得我们在读写数据库时还需要进行磁盘IO操作。有了缓冲池后,所有的页操作首先都是在缓冲池内完成的。
如一个DML语句,进行数据update或delete 操作时,此时改变了缓冲池页中的记录,此时因为缓冲池页的数据比磁盘的新,此时的页就叫做脏页。
不管怎样,总会后的内存页数据需要刷回到磁盘里,这里就涉及几个问题:
WAL策略解决了刷新页数据到磁盘时发生宕机而导致数据丢失的问题,它是关系数据库系统中用于提供原子性和持久性(ACID 属性中的两个)的一系列技术。
redo log,每当有事务提交时,先写入 redo log(重做日志),在修改缓冲池数据页,这样当发生掉电之类的情况时系统可以在重启后继续操作
InnoDB为了保证数据不丢失,维护了redo log。在缓冲池的数据页修改之前,需要先将修改的内容记录到redo log中,并保证redo log早于对应的数据页落盘,这就是WAL策略。
当故障发生而导致内存数据丢失后,InnoDB会在重启时,通过重放redo log,将缓冲池数据页恢复到崩溃前的状态。
按理说有了WAL策略,我们就可以高枕无忧了。但其问题点又出现在redo log上面:
所以为了解决脏页的刷新性能,脏页应该在什么时间、什么情况下进行脏页的刷新就用到了Checkpoint技术。
1、缩短数据库的恢复时间
当数据库怠机恢复时,不需要重做所有的日志信息。因为Checkpoint前的数据页已经刷回到磁盘了。只需要Checkpoint后的redo log进行恢复就好了。
2、缓冲池不够用时,将脏页刷新到磁盘
当缓冲池空间不足时,根据LRU算法会溢出最近最少使用的页,若此页为脏页,那么需要强制执行Checkpoint,将脏页也就是页的新版本刷回磁盘。
3、redo log不可用时,刷新脏页

如图redo log 的不可用是因为当前数据库对其设计都是循环使用的,所以其空间并不是无限大。
当redo log被写满, 因为此时系统不能接受更新, 所有更新语句都会被堵住。
此时必须强制产生Checkpoint需要将 write pos 向前推进,推进范围内的脏页都需要刷新到磁盘
Checkpoint发生的时间、条件及脏页的选择等都非常复杂。
Checkpoint 每次刷新多少脏页到磁盘?
Checkpoint每次从哪里取脏页?
Checkpoint 什么时间被触发?
百度AI开放平台
百度提供的综合性AI技术服务平台,汇集了多种AI能力和解决方案
42
查看详情
面对上面的问题,InnoDB存储引擎内部为我们提供了两种Checkpoint:
Sharp Checkpoint
发生在数据库关闭时将所有的脏页都刷新回磁盘,这是默认的工作方式,参数innodb_fast_shutdown=1
Fuzzy Checkpoint
InnoDB存储引擎内部使用这种模式,只刷新一部分脏页,而不是刷新所有的脏页回磁盘
FuzzyCheckpoint发生的情况
Master Thread Checkpoint
差不多以每秒或每十秒的速度从缓冲池的脏页列表中刷新一定比例的页回磁盘。
这个过程是异步的,即此时InnoDB存储引擎可以进行其他的操作,用户查询线程不会阻塞
FLUSH_LRU_LIST Checkpoint
因为LRU列表要保证一定数量的空闲页可被使用,所以如果不够会从尾部移除页,如果移除的页有脏页,就会进行此Checkpoint。
5.6版本后,这个Checkpoint放在了一个单独的Page Cleaner线程中进行,并且用户可以通过参数innodb_lru_scan_depth控制LRU列表中可用页的数量,该值默认为1024
Async/Sync Flush Checkpoint
指的是redo log文件不可用的情况,这时需要强制将一些页刷新回磁盘,而此时脏页是从脏页列表中选取的
5.6版本后不会阻塞用户查询
Dirty Page too much Checkpoint 即脏页的数量太多,导致InnoDB存储引擎强制进行Checkpoint。
其目的总的来说还是为了保证缓冲池中有足够可用的页。
其可由参数innodb_max_dirty_pages_pct控制,比如该值为75,表示当缓冲池中脏页占据75%时,强制进行CheckPoint
因为CPU和磁盘间的鸿沟的问题,从而出现缓冲池数据页来加快数据库DML操作
因为缓冲池数据页与磁盘数据一致性的问题,从而出现WAL策略(核心就是redo log)
因为缓冲池脏页的刷新性能问题,从而出现Checkpoint技术
InnoDB 为了提高执行效率,并不会每次DML操作都和磁盘交互进行持久化。而是通过Write Ahead Log 先策略写入redo log保证事物的持久化。
对于事物中修改的缓冲池脏页,会通过异步的方式刷盘,而内存空闲页和redo log的可用是通过Checkpoint技术来保证的。
更多相关免费学习推荐:mysql教程(视频)
以上就是了解InnoDB的Checkpoint技术的详细内容,更多请关注其它相关文章!
# 都是
# 网站建设平台推广方案
# 赣榆区硅基网站推广
# 衢州品牌建设网站
# 北京小红书推广种草网站
# 闵行全网营销推广
# 药品代理推广营销方案
# 重庆seo行业托管公司
# 顺德网站建设需求分析表
# 内蒙古绍兴网站推广代理
# 产品营销推广朋友圈
# InnoDB
# 移除
# 不可用
# 列表中
# 新版本
# 非常大
# 重启
# 池中
# 离线
# 镜像
# Checkpoint
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
学习通网页版个人登录_学习通网页版个人账户登录入口
SQL聚合查询、联接与筛选:GROUP BY 子句的正确使用与常见陷阱
win11怎么设置默认终端为Windows Terminal Win11替代CMD和PowerShell【技巧】
优酷官网登录入口电脑版 优酷官网网址入口
Win11怎么设置分辨率 Win11显示设置调整分辨率及刷新率修改
以下哪一个是适应长期护理制度发展而设立的新职业
智云Q3和Q2有什么升级_智云Q3与Q2手持云台功能与性能对比分析
电脑没有声音了怎么办 电脑声音问题的全面排查与修复指南【详解】
汽水音乐官网网页版入口 汽水音乐官网网页版在线入口
顺丰快递收费标准查询_如何查看顺丰最新收费价格
Pydantic 中“schema”字段命名冲突的解决方案
在PySimpleGUI中实现键盘按键绑定按钮事件
VS Code如何设置默认配置
Yandex俄罗斯搜索引擎官网入口 Yandex网页端直接访问
《procreate》绘制渐变效果教程
广州地铁app准妈咪徽章领取方法
圆通快递官方入口不需要登录 在线查询入口快速查询
漫蛙app官方版手机正版入口-漫蛙漫画manwa在线漫画正版入口
C++ cast类型转换总结_C++ reinterpret_cast与const_cast的使用
如何在CSS中设置背景图像:一个全面指南
DeepSeek超全面指南:入门必看
泰拉瑞亚网页版在线登录入口 泰拉瑞亚官方正版入口
如何用mysql开发用户注册登录功能_mysql用户注册登录数据库设计
b站如何剪辑视频_b站必剪app使用教程
PHP多语言网站的实现:会话管理与翻译函数优化教程
小红书网页版首页入口 小红书网页版电脑端官方登录链接
PHP中实现JSON数据数组分页的教程
iPhone14开启Apple TV遥控设置
微信客户端如何找回密码_微信客户端忘记密码找回方法
如何在解析前预检查XML文件的完整性? 比如检查文件大小或特定结束标签
火狐浏览器无法自动更新怎么办 手动更新火狐浏览器到最新版本【解决】
Flexbox布局:实现粘性导航与底部页脚的完美结合
《战地6》反作弊已成功拦截240万次作弊 发售第一周98%比赛没有作弊
如何高效地基于键列值映射DataFrame中的多个列
VBA Outlook邮件自动化:高效集成Excel数据与列标题的策略
奥克斯空调不制热啥毛病_奥克斯空调不制热原因分析及解决技巧
实时数据流中高效查找最小值与最大值
金牛福袋获取攻略
漫蛙manwa官网浏览入口_漫蛙漫画网页版访问链接
微信如何设置字体大小_微信字体设置的阅读舒适
Win10关闭UAC用户账户控制的方法 Win10降低安全提示等级【技巧】
mysql导入sql文件能分批导入吗_mysql分批次导入大sql文件的实用技巧
青橙手机语音助手怎么唤醒_青橙手机语音助手设置与唤醒方法
Golang中的rune与byte类型区别是什么_Golang字符与字节处理详解
优化 React onClick 事件处理:函数引用与箭头函数的对比
小红书如何引流到私信?引流到私信有用吗?
如何在CSS中使用过渡制作按钮边框渐变_border-color transition实现
《万兴喵影》导出视频方法
QQ网页版入口导航 QQ网页版在线访问通道
微博网页版访问入口 微博网页版网页端使用指南
2020-10-28
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。