mysql undo log 查看_了解mysql的undo log

第一次了解mysql的时候,看到了undo log这个名词,却不知道undo log是干什么,为了能够继续看明白一些mysql的资料,不得不先弄明白undo log是什么? undo log的原理是什么?它与数据库的其它特性如何配何。

这篇笔记只从原理上分析,不涉及具体的实现方法。

undo log是什么?

undo log是一种日志,日志中记录对于数据库的反向操作。

如果把数据库的内容当做一种状态机,那么数据的写操作就是修改状态机的命令,而undo 就对应修改状态机的反向命令。

所以理论上每一个对于状态机修改的命令都会产生对应一条相当的undo log,以便事务回滚的时候,能够把状态机修改到事务原来的样子。

假如我们有一个事务:

create table table1(c1 int);

begin transaction;

insert into table1 (100); //数据库执行这一条命令的时候应该产生一条undo日志,能够把这语句对于状态机的修改回复到原来没有修改的状态 , undo 应该是 delete table1 where c1 = 100;

insert into table1(200); // undo 应该是 delete table1 where c1 = 200;

update table1 set c1 = 300 where c1 = 200; // undo: update table1 set c1 = 200 where c1 = 300

rollback;

为什么要有undo log, 或者说undo log解决了什么问题?

其实这个问题问的不好,因为undo是设计出

你可能感兴趣的:(mysql,undo,log,查看)