博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql innodb checkpoint
阅读量:6192 次
发布时间:2019-06-21

本文共 868 字,大约阅读时间需要 2 分钟。

  • mysql checkpoint分为两种
    • sharp checkpoint
    • fuzzy checkpoint

sharp checkpoint

sharp checkpoint会把所有已提交事务相关的脏页刷到磁盘,并记录最新的已提交事务的LSN号。sharp checkpoint刷新到磁盘的脏页是某一时刻的一致性数据。

当数据库关闭时,会发生sharp checkpoint

fuzzy checkpoint

fuzzy checkpoint则复杂很多。fuzzy checkpoint会一点点的把脏页刷新到磁盘,直到与sharp checkpoint达到相同的目的(即所有的已提交事务相关的脏页到刷到磁盘)。fuzzy checkpoint会把两个LSN之间的脏页刷新到磁盘。但是并不能保障LSN之间的数据时一致性的。所以被称为fuzzy(失真) checkpoint。

innodb使用buffer pool来避免数据直接写入磁盘。这样数据可以再buffer pool中多次修改并最终写入磁盘,这样就减少了磁盘IO。buffer pool中维护了几个重要的list:free list、LRU list、flush list。当有新的数据读入buffer pool中时,会从free list中分配page。当free list中没有空闲page时,需要等待flush list中的数据刷到磁盘,这样很慢。所以innodb会定期的把flush list中的旧数据刷到磁盘。
再者,innodb redo log文件是循环使用的,所以必须保证日志文件在重写前,所有buffer pool中相关的脏数据刷新的磁盘,不然数据库宕机后这些数据就会丢失。因为日志是按照数据修改的时间记录的,所以旧的脏数据会被先刷到磁盘,这也就是fuzzy checkpoint的工作。因为日志中的旧数据已经刷新到磁盘,所以数据库宕机后,实例恢复会从fuzzy checkpoint后的LSN开始。
当数据库正常工作时,会进行fuzzy checkpoint

转载地址:http://uigda.baihongyu.com/

你可能感兴趣的文章
谈谈网游里的黑势力
查看>>
Spring AOP 实现原理
查看>>
为企业用户配置专有UPN后缀
查看>>
Linux 时间与网络时间服务器同步
查看>>
cobbler 自动部署安装配置
查看>>
Linux学习-05-磁盘与文件系统管理-2
查看>>
迷宫问题
查看>>
我的友情链接
查看>>
Android iPhone iPad Microsoft Office Mobile 免费了
查看>>
【常用模板】 混合背包
查看>>
写在2012元旦
查看>>
生产环境之“进程”两字
查看>>
【转】Netty系列之Netty高性能之道
查看>>
hadoop 测试第一个mapreduce程序
查看>>
Linux下HAProxy+keepalived双机高可用方案
查看>>
java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory的解决
查看>>
wireshark 在win8上安装
查看>>
免版权图片下载站点
查看>>
我的友情链接
查看>>
Linux操作系统发展史
查看>>