checkpoint干的事情:

将缓冲池中的脏页刷新回磁盘,不同之处在于每次从哪里取多少脏页刷新到磁盘,以及什么时候触发checkpoint。

checkpoint解决的问题:

1.缩短数据库的恢复时间(数据库宕机时,不需要重做所有的日志,因checkpoint之前的页都已经刷新回磁盘啦)

2.缓冲池不够用时,将脏页刷新到磁盘(缓冲池不够用时,根据LRU算会溢出最近最少使用的页,若此页为脏页,需要强制执行checkpoint将脏也刷回磁盘)

3.重做日志不可用时,刷新脏页(采用循环使用的,并不是无限增大。当重用时,此时的重做日志还需要使用,就必须强制执行checkpoint将脏页刷回磁盘)

checkpoint分类:

1.Sharp Checkpoint

发生在数据库关闭时将所有的脏页刷回磁盘,这是默认的。通过参数innodb_fast_shutdown=1来设置。

2.Fuzzy Checkpoint

在InnoDB存储引擎内部使用Fuzzy Checkpoint进行页的刷新,即只刷新一部分脏页,而不是全部刷新。大致分为以下几种情况:

a.Master Thread Checkpoint

差不多以每秒或者每十秒从缓冲池的脏页列表(Flush列表),这是异步操作,InnoDB存储引擎可以进行其他的操作部分不会发生堵塞。

b.FLUSH_LUR_LIST Checkpoint

InnoDB存储引擎需要保证LRU列表中有差不多100个空闲页可供使用。在InnoDB1.1.X版本之前,需要检查LRU列表中是否有足够的可用空间操作发生在用户查询线程中,显然这会阻塞用户的查询操作。倘若没有100个空闲页,那么InnoDB存储引擎会将LRU列表尾端的页移除,如果这些页中有脏页,那么需要进行Checkpoint,而这些来自于LRU列表的被称为FLUSH_LRU_LIST Checkpoint。但是在MySQL5.6版本后这个检查被放在了一个单独的Page Cleaner

Thread中进行,通过参数innodb_lru_scan_depth来设置可用页的数量。

c.Async/Sync Flush Checkpoint

在重做日志文件不可用的情况下,需要将一些也刷新回磁盘,而操作发生在Flush列表上。若将已经写入到重做日志的LSN记为redo_lsn,将已经刷新回磁盘最新的LSN记为checkpoint_lsn,则可以定义:checkpoint_age = redo_lsn-checkpoint_lsn在定义一下的变量async_water_mark=75%*total_redo_log_file_size、sync_water_mark=90%*total_redo_file_size。若每个重做日志的大小为1G且定义了两个重做日志共2G。那么async_water_mark=1.5G,sync_water_mark=1.8G。

当checkpoint_age

当async_water_mark

当checkpoint_age>sync_water_mark时,这种情况很少发生除非设置的重做日志文件太小,并且进行类似于LOAD DATA的BULK INSRET操作。这个时候触发Sync Flush从Flush列表刷新足够的脏页会磁盘,使得刷新后满足checkpoint_age

Async Flush Checkpoint会阻塞发现问题的用户查询线程,Sync Flush Checkpoint会阻塞所有的用户查询线程,并且等待脏页刷新完成。但是从MySQL5.6版本开始这部分操作放入单独的Page Cleaner Thread中,不再会堵塞用户查询线程。

d.Dirty Page too much Checkpoint

脏页的数量太多导致InnoDB存储引擎强制进行Checkpoint,其目的是为了保证缓冲池中有足够的页可以用。可以通过参数innodb_max_dirty_pages_pct来设置。

注意:Checkpoint机制将脏页刷回磁盘并不是直接刷回磁盘的,而是通过doublewrite(两次写). 即通过memcpy函数将脏页先复制到内存中的doublewrite buffer,之后通过doublewrite分两次(每次1MB)顺序写入共享表空间的物理磁盘上,然后调用fsync函数同步磁盘。具体是怎么实现的会在以后的博客中分享。

原文:http://blog.csdn.net/chenlvzhou/article/details/41518979

mysql checkpoint时机_MySQL Checkpoint机制相关推荐

  1. mysql pxc测试_Mysql同步机制 - PXC 压力测试 tpcc安装及使用

    tpcc是针对mysql单机制定的测试标准, 这个标准对于pxc集群来说要求太高, 所有后面即使有些项目没有通过也不必太过在意,主要是压一下事务处理能力. Mysql单机虽然写入速度快,但相比于Mys ...

  2. mysql行锁索引问题_Mysql锁机制--索引失效导致行锁变表锁

    =============== Tips:在阅读本文前,最好先阅读 这篇(Mysql锁机制--行锁)文章~ 在上篇文章中,我们看到InnoDB默认的行锁可以使得操作不同行时不会产生相互影响.不会阻塞, ...

  3. mysql 活跃事务_MySQL日志与事务

    整体架构 事务的基本概念 事务就是一组原子性的sql查询,或者是一个独立的工作单元 事务内的语句,要么全部执行成功,要么全部执行失败 ACID标识原子性(atomicity).一致性(consiste ...

  4. mysql ibdata1 删除_mysql 误删除ibdata1之后的恢复方法

    mysql 误删除ibdata1之后如何恢复 如果误删除了在线服务器中mysql innodb相关的数据文件ibdata1以及日志文件 ib_logfile*, 应该怎样恢复呢? 这时候应该一身冷汗了 ...

  5. mysql优化说明_MySQL性能优化各个参数解释说明

    [client] port = 3306 socket = /tmp/mysql.sock [mysqld] port = 3306 socket = /tmp/mysql.sock basedir ...

  6. 关于mysql内存管理_MYSQL内存管理及优化

    MYSQL内存管理及优化 内存是影响数据库性能的主要资源,也是mysql性能优化的一个重要方面: 内存优化的原则 将尽量多的内存分配给mysql做缓存,但是要给操作系统和其他程序的运行预留足够的内存, ...

  7. MySQL 的备份和恢复机制 MyISAM 和 Innodb

    转自:http://blog.csdn.net/sosoft_dzz/article/details/5299666 deven感觉这个文章还是比较靠谱的. 本文讨论 MySQL 的备份和恢复机制,以 ...

  8. mysql 汉编码 的选_peewee连接mysql汉语言数据编码_mysql

    peewee连接mysql中文数据编码 系统是win7 x64 python 2.7.6的site.py里面编码设定为 utf-8 py文件首行指定 #coding:utf-8 mysql 5.5.3 ...

  9. windows 新建mysql权限设置_Windows下设置MySQL安全权限_mysql

    注意:本文的内容涉及到修改NTFS磁盘权限和设置安全策略,请务必在确认您了解操作可能的后果之后再动手进行任何的修改. 文中提及的权限都是在原有权限上附加的权限. [修改步骤] 1.创建用户 创建一个名 ...

最新文章

  1. 网络爬虫流程与注意事项
  2. (传送门)linux命令总结dd命令详解
  3. 【深度学习看手相】台湾学生获奖 AI 项目是科学还是伪科学?
  4. python done()什么意思_Python done
  5. IOS开发数据库篇--- sqlite常用语句
  6. python网页登录钉钉_django 钉钉扫码登录
  7. 青海大学计算机专业在全国排名,青海大学专业排名
  8. 数据驱动:这是一种文化
  9. 有关nginx upstream的几种配置方式
  10. 查看虚拟机cpu型号_虚拟机管理器(Virtual Machine Manager)简介 | Linux 中国
  11. 初学者宝典:C语言入门基础知识大全(中)
  12. 在线JSON格式化工具
  13. c语言中static 用法
  14. Android 音视频深入 十九 使用ijkplayer做个视频播放器(附源码下载)
  15. Spring IOC的三种主要注入方式?
  16. 31个实用find命令的案例
  17. H5仿抖音上下切换翻页动态加载效果
  18. 常州和南京计算机工资水平,南京和苏州哪一个城市工资高?六张图带你看懂江苏各市平均工资情况...
  19. 我的世界html导入整合包教程,我的世界Windows整合包移植到Mac教程
  20. scanf函数用%s参数时的注意事项

热门文章

  1. mysql 单表数据_Mysql--单表数据记录查询
  2. Oracle 实验4 更新数据
  3. android通知栏如何添加按钮,如何在通知栏上放置媒体控制器按钮?
  4. 计算机网络教程三次握手,计算机网络(二) TCP协议的三次握手
  5. 控制台程序转化为windows服务
  6. 03Oracle Database 物理结构,逻辑结构
  7. 1.无重复字符的最长子串
  8. 002---设计表结构
  9. 【五讲四美】之“讲思想”
  10. CKEditor的使用,并实现图片上传