当前位置: 首页 > news >正文

mysql的checkpoint_mysql 之 checkpoint和LSN详解

checkpoin是重做日志对数据页刷新到磁盘的操作做的检查点,通过LSN号保存记录,作用是当发生宕机等crash情况时,再次启动时会查询checkpoint点,在该检查点之后发生的事物修改恢复到磁盘。

mysql> show engine innodb status\G;

---

LOG

---

Log sequence number 10623965866

Log flushed up to   10623965866

Pages flushed up to 10623965866

Last checkpoint at  10623965857

0 pending log flushes, 0 pending chkp writes

13 log i/o‘s done, 0.81 log i/o‘s/second

Last checkpoint at就是系统最后一次刷新buffer pool中页数据到磁盘的checkpoint,checkpoint是和redo log进行关联操作的,也就记录在redo log中,checkpoint记录在redo log第一个文件的头部,存储两个值循环更替修改。

LSN(log sequence number)日志序列号,5.6.3之后占用8字节,LSN主要用于发生crash时对数据进行recovery,LSN是一个一直递增的整型数字,表示事务写入到日志的字节总量。

LSN不仅只存在于重做日志中,在每个数据页头部也会有对应的LSN号,该LSN记录当前页最后一次修改的LSN号,用于在recovery时对比重做日志LSN号决定是否对该页进行恢复数据。前面说的checkpoint也是有LSN号记录的,LSN号串联起一个事务开始到恢复的过程。

---

LOG

---

Log sequence number 10623965866

Log flushed up to   10623965866

Pages flushed up to 10623965866

Last checkpoint at  10623965857

0 pending log flushes, 0 pending chkp writes

13 log i/o‘s done, 0.81 log i/o‘s/second

再用上面的结果看下,log sequence number就是当前产生最新的日志序列号

log flushed up to:已经刷新到redo log磁盘文件的LSN号

pages flushed up to:该项是5.6新加入的,这个官网也未做介绍,而又先于checkpoint,个人理解为已经在buffer poll中写入到数据脏页上的LSN号

在生产环境中往往last checkpoint 会落后log sequence number许多,checkpoint记录数据页刷新情况,而数据页刷新是有MySQL内部机制决定,所以会存在差值,而为了保证数据库发生crash再启动数据不丢失,我们需要把redo log刷新配置项innodb_flush_sync配置为1,让redo log在事务结束时就刷新到磁盘,以用redo log来做数据恢复。所以log flushed up to的LSN号都会与log sequence number一致。

相关文章:

  • asp.net 调mysql过程_asp.net c# java调用mysql存储过程方法
  • java和Mysql数据一致性_Redis缓存和MySQL数据一致性方案详解
  • mysql double 转string类型转换_String类型转化为double类型的问题
  • mysql数据库命令 单选_MySQL常用命令
  • 为什么a链接不起作用了_考前必读:原理题难点——最高点是平衡点?催化剂为什么能提高产率?...
  • python随机数比大小_Python实现基于权重的随机数2种方法
  • dao interface运用_简单DAO层示例
  • python爬虫框架论文开题报告范文_基于Web爬虫系统设计开题报告
  • mysql中查询数字字符串很慢_mysql获取字符串中数字的查询语句
  • mysql的内存数据库_内存数据库
  • python 位运算与等号_Python-位运算符规则、原理与用法
  • java怎么给文件加密_如何利用JAVA对文档进行加密和解密处理,完整的java类
  • Java throws 不写_Java如何在没有throws签名的函数中手动抛出异常
  • java加载so文件_在Java运行时加载Linux .so文件
  • bootstrap java web_在java web 项目中 怎么部署BootStrap
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【笔记】你不知道的JS读书笔记——Promise
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 2017 前端面试准备 - 收藏集 - 掘金
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • Android组件 - 收藏集 - 掘金
  • Brief introduction of how to 'Call, Apply and Bind'
  • eclipse的离线汉化
  • Hexo+码云+git快速搭建免费的静态Blog
  • js数组之filter
  • Laravel Telescope:优雅的应用调试工具
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • Swift 中的尾递归和蹦床
  • swift基础之_对象 实例方法 对象方法。
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • XForms - 更强大的Form
  • 程序员最讨厌的9句话,你可有补充?
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • ​如何防止网络攻击?
  • ​什么是bug?bug的源头在哪里?
  • #define 用法
  • (4) PIVOT 和 UPIVOT 的使用
  • (day 12)JavaScript学习笔记(数组3)
  • (搬运以学习)flask 上下文的实现
  • (循环依赖问题)学习spring的第九天
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)大道至简,职场上做人做事做管理
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • .Family_物联网
  • .Net 4.0并行库实用性演练
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .NET delegate 委托 、 Event 事件,接口回调
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .NET中 MVC 工厂模式浅析
  • /var/spool/postfix/maildrop 下有大量文件
  • ??eclipse的安装配置问题!??