MySQL的undo日志如何支持MVCC多版本并发控制机制?

2026-05-05 20:250阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计498个文字,预计阅读时间需要2分钟。

MySQL的undo日志如何支持MVCC多版本并发控制机制?

使用`undo`可以撤销操作,查看之前的操作记录。`redo`则可以重新执行之前撤销的操作,保证事务的持久性。从`redo`日志可以恢复到系统崩溃前的状态。而`undo`日志确保了事务回滚到执行前的状态。

undo日志

前面学习了redo日志,redo日志保证的是崩溃时事务持久性。我们可以从redo日志恢复到系统崩溃以前。

undo日志就是为了保证事务回滚时事务所作所为都能回到事务执行前。保证了事务的原子性。redo把我们做增删改之前的状态记录下来,帮助MySQL回滚到事务执行之前的样子。

MySQL的undo日志如何支持MVCC多版本并发控制机制?

这篇文章了解一下事务ID和undo日志产生就OK了,对于Undo日志存储可以直接略过。

事务ID

事务两种类型:只读事务,读写事务。

针对于只读事务,MySQL会在其对用户创建的临时表进行增删改的时候才会为其分配事务ID,否则不分配。

这里的临时表指的是create temporary 表名,和我们使用explain SQL的时候在extra上显示的using temporary不一样。前者是用户创建的用户临时表,只针对于当前session有效,后者是MySQL内部临时表。

而针对于读写事务来说,MySQL会在事务执行对某个表进行增删改的时候为其分配一个事务ID,否则不分配。

阅读全文

本文共计498个文字,预计阅读时间需要2分钟。

MySQL的undo日志如何支持MVCC多版本并发控制机制?

使用`undo`可以撤销操作,查看之前的操作记录。`redo`则可以重新执行之前撤销的操作,保证事务的持久性。从`redo`日志可以恢复到系统崩溃前的状态。而`undo`日志确保了事务回滚到执行前的状态。

undo日志

前面学习了redo日志,redo日志保证的是崩溃时事务持久性。我们可以从redo日志恢复到系统崩溃以前。

undo日志就是为了保证事务回滚时事务所作所为都能回到事务执行前。保证了事务的原子性。redo把我们做增删改之前的状态记录下来,帮助MySQL回滚到事务执行之前的样子。

MySQL的undo日志如何支持MVCC多版本并发控制机制?

这篇文章了解一下事务ID和undo日志产生就OK了,对于Undo日志存储可以直接略过。

事务ID

事务两种类型:只读事务,读写事务。

针对于只读事务,MySQL会在其对用户创建的临时表进行增删改的时候才会为其分配事务ID,否则不分配。

这里的临时表指的是create temporary 表名,和我们使用explain SQL的时候在extra上显示的using temporary不一样。前者是用户创建的用户临时表,只针对于当前session有效,后者是MySQL内部临时表。

而针对于读写事务来说,MySQL会在事务执行对某个表进行增删改的时候为其分配一个事务ID,否则不分配。

阅读全文