mysql lsn_Mysql之LSN和checkpoint和double write

mysql lsn_Mysql之LSN和checkpoint和double write一直弄不清楚 LSN 和 checkpoint 的意思个人理解 当要把 buffer pool 里的脏页刷入磁盘的时候 会用 checkpoint 记录刷入内容 刷入到哪里了 防止下次忘记刷入内容 刷入到哪里了 checkpoint 就是一个数字 每当刷入内容 就会写入日志 然后用一个数字来记录日志和内容写入到哪里了 这个数字是一直增加的 redo 日志里有 LSN 页里面也有 LSN checkpoint 记录在 redo

一直弄不清楚LSN和checkpoint的意思

个人理解:当要把buffer_pool里的脏页刷入磁盘的时候,会用checkpoint记录刷入内容,刷入到哪里了。防止下次忘记刷入内容,刷入到哪里了。checkpoint就是一个数字,每当刷入内容,就会写入日志,然后用一个数字来记录日志和内容写入到哪里了,这个数字是一直增加的。

redo日志里有LSN,页里面也有LSN。checkpoint记录在redo日志里。

当update执行的时候,会写入很多日志信息到redo日志。先写入到redo日志buffer,就是内存缓存中。更新的内容先会更新buffer里面的页。因为redo日志有写盘更新机制,基本都是一有写入buffe,就会写入磁盘。所以redo磁盘日志会时时记录LSN这一串数字。

只有当条件达到了,才会执行checkpoint,把脏页写入磁盘。当所有脏页写入磁盘后,会把checkpoint写入到redo日志。而写入磁盘的每一个页,都记录一个LSN的。

当mysql突然挂了,如何做数据一致性呢?

mysql启动之后,会检测redo日志里面的checkpoint,就知道最后写入磁盘的页的LSN都是小于等于这个checkpoint的。就是记录着大于checkpoint的LSN的页,都没及时写入到磁盘,都丢失了。此时内容需要从redo日志获取,利用redo日志进行数据一致性。

通过 show engine innodb status\G;  查看LSN和checkpoint

redo日志无法对已经损坏的页进行修复,所以如果在写入数据的时候,比如一次IO写入16K,文件系统block是4k,磁盘IO是512k。那么mysql进行了一次写入,16k,但是当写入了4k,突然mysql挂了,那么还有12k是没有写入。导致mysql这个页的数据有问题,页损坏了。此时redo无法修复。

57a1dcf39b88

doublewrite的过程是,把脏页写入磁盘的过程,先写入内存的doublewrite buffer,然后内存的doublewrite buffer先写一份到共享表空间的double write里。然后再写一份到相对应的表空间里。如果此时突然mysql挂了,mysql重启的时候,这个页的数据从共享表空间那边copy一份过来恢复就行了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/225887.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午8:19
下一篇 2026年3月17日 上午8:19


相关推荐

  • 电子计算机主机房国标,中华人民共和国国家标准电子计算机机房设计规范[通俗易懂]

    电子计算机主机房国标,中华人民共和国国家标准电子计算机机房设计规范[通俗易懂]中华人民共和国国家标准电子计算机机房设计规范中华人民共和国国家标准电子计算机机房设计规范GB50174-93(1993年2月17日国家技术监督局、中华人民共和国建设部联合发布1993年9月1日实施)——————————————————————————–第一章总则第1.0.1条为了使电子…

    2022年10月2日
    5
  • matlab怎么定义矩阵变量_MATLAB01:基本的数学运算与矩阵运算

    若微信排版有问题,请点击阅读原文查看MATLAB01:基本的数学运算与矩阵运算MATLAB基本语法变量变量名保留变量不适合做变量名变量不应当覆盖内置函数变量类型数字型变量的显示格式MATLAB命令行使用MATLAB进行数字运算使用MATLAB计算数学表达式MATLAB内置的数学函数使用MATLAB进行矩阵运算定义矩阵向终端输入矩阵使用冒号运算符创建向量定义特殊矩阵矩阵的索引矩阵的操作操作…

    2022年4月6日
    101
  • 爬取7160美女图片

    爬取7160美女图片#coding=utf-8importurllib.requestfrombs4importBeautifulSoupfromurllibimporterrorimportrels=[‘zhenrenxiu’,’meinv’,"lianglichemo",’rentiyishu’,’xiaohua’]defvalidateTitle(title):rstr=r"…

    2025年8月2日
    6
  • 从日记到博客

    从日记到博客我自零八年上大学开始主动写日记,记录一些自己的想法。我特别喜欢在纸上写字的感觉。我会在纸上记录一些想法和反思,自己新见识的事物、经历,与人接触的小摩擦,待人接物的新想法,也有自己的情感的。当看看最初的日记的时候,觉得当时的想法还非常的幼稚。后来经历的一些事情给我很多困惑、苦恼、启发、激励,帮我建立对人、对事的态度和认知。如果不是这些文字,过去的我是什么样子,会有什么样的想法,早就完全忘记了。正是这…

    2022年5月18日
    36
  • java isnull方法_isnull函数详解

    java isnull方法_isnull函数详解isnull 函数详解 isnull 是判断一个字段是否为空值 返回一个特定的值列 isnull a 0 如果 a 字段有空值返回 0 没有空值就返回 a 的本身 isnull a 1 2 字段 a 有空值返回 1 判断 isnull a 1 是否等于 2SQL 中有多种多样的函数 下面将为您介绍 SQL 中的 ISNULL 函数 包括其语法 注释 返回类型等 供您参考 希望对您学习 SQL 能够有所帮助 ISNULL 使用指定的替换

    2026年3月26日
    1
  • 【Python】python文件打开方式详解——a、a+、r+、w+、rb、rt区别[通俗易懂]

    【Python】python文件打开方式详解——a、a+、r+、w+、rb、rt区别[通俗易懂]第一步排除文件打开方式错误:r只读,r+读写,不创建w新建只写,w+新建读写,二者都会将文件内容清零(以w方式打开,不能读出。w+可读写)w+与r+区别:r+:可读可写,若文件不存在,报错;w+:可读可写,若文件不存在,创建r+与a+区别:fd=open(“1.txt”,’w+’)fd.write(‘123’)fd=open(“1.txt”,’r…

    2022年7月13日
    19

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号