美文网首页
mysql事务提交过程

mysql事务提交过程

作者: 尝试热爱这个世界 | 来源:发表于2021-07-02 17:33 被阅读0次

转自https://www.cnblogs.com/exceptioneye/p/5451960.html

MySQL是通过WAL方式,来保证数据库事务的一致性和持久性,即ACID特性中的C(consistent)和D(durability)。

WAL(Write-Ahead Logging)是一种实现事务日志的标准方法,具体而言就是:

1、修改记录前,一定要先写日志;

2、事务提交过程中,一定要保证日志先落盘,才能算事务提交完成。

通过WAL方式,在保证事务特性的情况下,可以提高数据库的性能。

从上述流程可以看出,提交过程中,主要做了4件事情,

1、清理undo段信息,对于innodb存储引擎的更新操作来说,undo段需要purge,这里的purge主要职能是,真正删除物理记录。在执行delete或update操作时,实际旧记录没有真正删除,只是在记录上打了一个标记,而是在事务提交后,purge线程真正删除,释放物理页空间。因此,提交过程中会将undo信息加入purge列表,供purge线程处理。

2、释放锁资源,mysql通过锁互斥机制保证不同事务不同时操作一条记录,事务执行后才会真正释放所有锁资源,并唤醒等待其锁资源的其他事务;

3、刷redo日志,前面我们说到,mysql实现事务一致性和持久性的机制。通过redo日志落盘操作,保证了即使修改的数据页没有即使更新到磁盘,只要日志是完成了,就能保证数据库的完整性和一致性;

4、清理保存点列表,每个语句实际都会有一个savepoint(保存点),保存点作用是为了可以回滚到事务的任何一个语句执行前的状态,由于事务都已经提交了,所以保存点列表可以被清理了。

MySQL 本身不提供事务支持,而是开放了存储引擎接口,由具体的存储引擎来实现,具体来说支持 MySQL 事务的存储引擎就是 InnoDB。

存储引擎实现事务的通用方式是基于 redo log 和 undo log。

简单来说,redo log 记录事务修改后的数据, undo log 记录事务前的原始数据。

所以当一个事务执行时实际发生过程简化描述如下:

先记录 undo/redo log,确保日志刷到磁盘上持久存储。

更新数据记录,缓存操作并异步刷盘。

提交事务,在 redo log 中写入 commit 记录。

在 MySQL 执行事务过程中如果因故障中断,可以通过 redo log 来重做事务或通过 undo log 来回滚,确保了数据的一致性。

相关文章

  • mysql事务提交过程

    转自https://www.cnblogs.com/exceptioneye/p/5451960.html MyS...

  • MySQL事务处理二

    SELECT @@AUTOCOMMIT; 查看MySQL是否自动提交事务 0表示手动提交事务 1表示自动提交事...

  • Mysql事务控制语句

    介绍 Mysql的Innodb存储引擎默认事务都是自动提交(隐式提交);查看当前的事务是否自动提交: 事务操作 开...

  • 事务隔离级别测试

    MYSQL事务的四种隔离级别简介 读未提交 其他事务未提交的数据变更对本事务可见。 读已提交 其他事务未提交的数据...

  • 25、MySQL 事务隔离级别?

    MySQL 事务隔离级别? 1、READ UNCOMMITTED(未提交读):事务中的修改,即使没有提交,...

  • 第三弹:MySQL事务和锁

    第三弹:MySQL事务和锁 事务特点:ACID 未提交读:事务A可以读取到事务B已修改但未提交的数据读已提交RC:...

  • Spring事务隔离级别与Mysql事务隔离级别

    一、MySQL事务隔离级别 读未提交:该级别事务可以读取到其他未提交的事务,造成脏读。 读已提交:能读取到其他提交...

  • MySQL事务隔离级别

    MySQL事务隔离级别有4级 1.读取未提交 事务A新增一条记录,尚未提交,事务B可以读取 别人还没提交,你就可以...

  • MySQL事务隔离级别

    一、MySQL事务级别分类 未提交读(READ UNCOMMITTED) 已提交读(READ COMMITTED)...

  • 咦,为什么我的事务回滚不了?

    MySQL 事务小伙伴们都懂,通过 begin 开启事务,通过 commit 提交事务或者通过 rollback ...

网友评论

      本文标题:mysql事务提交过程

      本文链接:https://www.haomeiwen.com/subject/attgyltx.html