码迷,mamicode.com
首页 > 数据库 > 详细

InnoDB CheckPoint检查点

时间:2020-06-28 22:34:04      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:改变   丢失   热点   最新版   通过   delete   修改   数据   check   

缓冲池设计的目的是为了协调CPU速度和磁盘速度的鸿沟。因此页的操作首先会缓冲池中进行。如果一条DML语句,如Update或者Delete改变了页中的记录,那么此页是脏页,即缓冲池的页的版本要比磁盘的新。数据库需要将最新版本的页从缓冲池刷新到磁盘。

倘若每次一个页发生变化,就将此页的版本刷新到磁盘,那么这个开销过于庞大。若热点数据集集中在几个页中,那数据库的性能变得非常差。同时,如果在从缓冲池将页的新版本刷新到磁盘时候发生了宕机,那数据变得不可恢复。

为了避免数据丢失的情况,当前事务数据库普遍采用write Ahead log策略,即当事务提交时候,先写重做日志,在修改页。当由于宕机而导致数据丢失时,通过重做日志来完成数据的恢复,也就体现了事务的ACID要求

检查点技术解决几个问题

缩短数据库的恢复时间
缓冲池不够用时,将脏页刷新到磁盘
重做日志不可用时,刷新脏页
当数据库宕机时,数据库不需要重做所有的日志,因为checkpoint之前的页都已经刷新到磁盘。只需要对checkpoint后的重做日志进行恢复,大大缩短了恢复的时间

此外,当缓冲池不够空间时,根据LRU算法会溢出最近最少未使用的页,若此页为脏页,那么需要强制执行checkpoint,将脏页也就是页的最新版本刷新到磁盘

checkpoint所做的事即将缓冲池中的脏页刷回到磁盘。不同之处在于每次刷新多少页回磁盘,从哪儿取脏页,以及什么时候触发checkpoint,InnoDB有2种CheckPoint

Sharp CheckPoint      Fuzzy CheckPoint

Sharp CheckPoint发生在数据关闭时将所有的脏页刷新到磁盘,这是默认的工作方式。如果数据库在运行时使用Sharp CheckPoint那么会对数据库可用性产生巨大的影响。因而Fuzzy CheckPoint也被用于页的刷新,即刷新部分脏页,而不是刷新所有脏页回磁盘

原文链接:https://blog.csdn.net/qq_33369979/java/article/details/87920046

InnoDB CheckPoint检查点

标签:改变   丢失   热点   最新版   通过   delete   修改   数据   check   

原文地址:https://www.cnblogs.com/zh-dream/p/13205177.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!