电话
400 9058 355
Undo日志是InnoDB保障事务原子性与MVCC的核心逻辑日志,记录DML前的旧值或反向操作,用于回滚和快照读;按INSERT/DELETE/UPDATE类型分别生成,含trx_id等元信息,生命周期延续至不再被任何事务需要后由purge线程清理。
Undo日志是InnoDB存储引擎为保障事务原子性而设计的核心机制,本质是一类逻辑日志,专门记录数据修改前的旧值或反向操作信息,用于事务回滚和多版本并发控制(MVCC)。
它解决一个根本问题:事务执行中途失败、被主动中止(ROLLBACK),或数据库意外崩溃时,如何把已写入内存但尚未提交的修改“撤回去”?
每条DML语句(INSERT/UPDATE/DELETE)在缓存页(buffer pool)中生效前,InnoDB都会先生成对应的undo日志条目,并打上当前事务ID(trx_id)、表ID(table_no)、回滚指针(roll_pointer)等关键元信息。

当执行ROLLBACK或事务异常终止时,InnoDB不是“重放”原始SQL,而是沿着该事务关联的undo日志链表,从最新到最旧逐条执行其记录的反向操作:
它不是随事务提交就立刻消失,而是保留一段时间,原因有二:一是支持未提交事务的回滚;二是服务其他事务的MVCC读取需求(如可重复读隔离级别下需要访问历史版本)。
邮箱:8955556@qq.com
Q Q:8955556
本文详解如何将Go官方present工具(用于生成HTML5...
PySNMP在不同版本中对SNMP错误状态(errorSta...
time.Sleep仅阻塞当前goroutine,其他gor...
PHPfopen()创建含特殊符号的文件名失败主因是操作系统...
WooCommerce中通过代码为分组产品动态聚合子商品的属...
io.ReadFull返回io.ErrUnexpectedE...
本文详解Yii2中控制器向视图传递ActiveRecord数...
本文详解为何通过wp_set_object_terms()为...
Pytest中使用@mock.patch类装饰器会导致补丁泄...
带缓冲的channel是并发安全的FIFO队列;make(c...