checkpoint技术mysql_认识 MySQL 中的 Checkpoint 技术

认识 MySQL 中的 Checkpoint 技术

1,checkpoint 产生的背景

数据库在发生增删查改操作的时候, 都是先在 buffer pool 中完成的, 为了提高事物操作的效率, buffer pool 中修改之后的数据, 并没有立即写入到磁盘, 这有可能会导致内存中数据与磁盘中的数据产生不一致的情况

事物要求之一是持久性(Durability),buffer pool 与磁盘数据的不一致性的情况下发生故障, 可能会导致数据无法持久化

为了防止在内存中修改但尚未写入到磁盘的数据, 在发生故障重启数据之后产生事物未持久化的情况, 是通过日志 (redo log) 先行的方式来保证的

redo log 可以在故障重启之后实现重做, 保证了事物的持久化的特性, 但是 redo log 空间不可能无限制扩大, 对于内存中已修改但尚未提交到磁盘的数据, 也即脏页, 也需要写入磁盘

对于内存中的脏页, 什么时候, 什么情况下, 将多少脏页写入磁盘, 是由多方面因素决定的

checkpoint 的工作之一, 就是对于内存中的脏页, 在一定条件下将脏页刷新到磁盘

2,checkpoint 的分类

按照 checkpoint 刷新的方式, MySQL 中的 checkpoint 分为两种, 也即 sharp checkpoint 和 fuzzy checkpoint

sharp checkpoint: 在关闭数据库的时候, 将 buffer pool 中的脏页全部刷新到磁盘中

fuzzy checkpoint: 数据库正常运行时, 在不同的时机, 将部分脏页写入磁盘, 进刷新部分脏页到磁盘, 也是为了避免一次刷新全部的脏页造成的性能问题

3 ,checkpoint 发生的时机

checkpoint 都是将 buffer pool 中的脏页刷新到磁盘, 但是在不同的情况下, checkpoint 会被以不同的方式触发, 同时写入到磁盘的脏页的数量也不同

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值