mysql事务的执行过程,Mysql事务执行过程详解

这篇博客详细解析了MySQL事务的执行过程,包括数据的写入、重做日志(redo log)与回滚日志(undo log)的作用和刷盘规则。redo log保证了事务的持久性,而undo log用于回滚和多版本并发控制(MVCC)。此外,讨论了LSN(日志序列号)的重要性以及事务提交时如何控制日志写入磁盘的策略。事务的原子性、持久性、隔离性和一致性在MySQL中通过undo log、redo log、锁机制和MVCC得以实现。
摘要由CSDN通过智能技术生成

总览

d8d91d304cf05765fa8fd21151e1050d.png

写data buffer和redolog buffer几乎同时;

data buffer只在checkponit点才会刷新到磁盘;

redolog buffer会在事务执行过程中随时写入磁盘,且对应事务的脏页写入到磁盘之后,redo log的使命也就完成了,重做日志占用的空间就可以重用(被覆盖);

undolog会在事务开始之前基于当前版本生成,undo 也会产生 redo 来保证undo log的可靠性;

当事务提交之后,undo log并不能立马被删除,而是放入待清理的链表,由purge线程判断是否由其他事务在使用undo段中表的上一个事务之前的版本信息,决定是否可以清理undo log的日志空间;

默认情况下undo文件是保持在共享表空间的,也即ibdatafile文件中;

事务提交的时候,一次性将事务中的sql语句(一个事物可能对应多个sql语句)按照一定的格式记录到binlog中;

数据刷盘规则

内存中(buffer pool)未刷到磁盘的数据称为脏数据(dirty data)。由于数据和日志都以页的形式存在,所以脏页表示脏数据和脏日志。

innodb中,数据刷盘的规则只有一个:checkpoint。但是触发checkpoint的情况却有几种。不管怎样,checkpoint触发后,会将buff

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值