Mysql的LSN是什么?

LSN的含义
​ LSN全称为 Log Sequence Number,即日志序列号。它是一个不断递增的数字,用来标识事务日志中的每个操作或事件。LSN是一个64位的数字,每一个LSN值都是唯一的,并且随时间线性增加。
​ 通过SHOW ENGINE INNODB STATUS; 可以查看LSN

图片

LSN的运作机制
日志写入
当事务修改数据时,修改操作会首先记录在redo log中,并为每个日志记录分配一个LSN。然后这些修改操作才会应用到数据页(page)上。数据页上的LSN表示该页的最新修改。
检查点(Checkpoint)
检查点将内存中的所有脏页刷新到磁盘,并更新检查点LSN。这个LSN表示所有数据页的状态都一致,且在此LSN之前的所有日志记录都已经应用到数据页中,可以认为是已经完成了持久化。
崩溃恢复
在崩溃恢复过程中,InnoDB从检查点LSN开始扫描redo log,并重做此LSN之后的所有日志记录。这样可以确保所有修改都被应用到数据页中,恢复数据库到崩溃前的一致状态。

LSN的作用

日志记录:

LSN标识每个事务日志记录的位置。每次InnoDB写入日志文件(redo log)时,都会分配一个新的LSN。
通过LSN,InnoDB可以确定日志记录的顺序和位置,从而可以精确地进行日志恢复。

崩溃恢复:

如果MySQL服务器崩溃,InnoDB使用LSN来确定从哪里开始重做(redo)操作。它会从最后一个检查点(checkpoint)的LSN开始,重做所有之后的日志记录,以恢复数据库到一致状态。

检查点(Checkpoint):

检查点是InnoDB的一种机制,用于减少崩溃恢复时间。在创建检查点时,InnoDB会将内存中的脏页(被修改但尚未写入磁盘的页面)写入磁盘,并更新检查点的LSN。
这个LSN表示此检查点时数据库的状态。如果崩溃发生,InnoDB只需要重做这个LSN之后的日志记录。

数据文件:

LSN也会被存储在数据文件中,以跟踪数据文件的最新状态。每个数据页中都有一个LSN,表示该页最后一次被修改时的日志序列号。

作为程序员,持续学习和充电非常重要,作为开发者,我们需要保持好奇心和学习热情,不断探索新的技术,只有这样,我们才能在这个快速发展的时代中立于不败之地。低代码也是一个值得我们深入探索的领域,让我们拭目以待,它将给前端世界带来怎样的变革,推荐一个低代码工具。

应用地址: https://www.jnpfsoft.com
开发语言:Java/.net

这是一个基于Flowable引擎(支持java、.NET),已支持MySQL、SqlServer、Oracle、PostgreSQL、DM(达梦)、 KingbaseES(人大金仓)6个数据库,支持私有化部署,前后端封装了上千个常用类,方便扩展,框架集成了表单、报表、图表、大屏等各种常用的 Demo 方便直接使用。

至少包含表单建模、流程设计、报表可视化、代码生成器、系统管理、前端 UI 等组件,这种情况下我们避免了重复造轮子,已内置大量的成熟组件,选择合适的组件进行集成或二次开发复杂功能,即可自主开发一个属于自己的应用系统。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值