事务回滚 原子性 undo日志 回滚段 什么时候删除undo日志

事务回滚 原子性 undo日志 回滚段 什么时候删除undo日志
最新回答
冰河铺子

2023-05-24 15:03:27

原子性要求事务要么全部完成,要么不执行,确保数据一致性。

事务回滚在事务执行过程中发生中断时,将已执行的操作撤销。

回滚时,需记录操作信息,如插入记录需保存ID,回滚时删除;删除记录保留内容,回滚时插入;修改记录保存旧值,回滚时写入。

撤销操作记录为“undo日志”。事务ID用于追踪特定表操作的唯一标识。

聚族索引记录包括事务ID与undo日志引用,形成“版本链”。

undo日志以序列化方式存储,每条记录包含唯一undo编号,直至事务提交。

删除操作形成垃圾链表,事务未提交前处于特殊状态。

在删除前,需记录事务ID与undo日志引用,用于回滚。

undo日志存储在特定页面中,每个事务对应多个undo日志链表。

每个事务提交后,update类型的undo日志不能立即删除,用于维护MVCC。

“回滚段”管理undo页面链表,系统在同一时间存在多个undo页面。

每个undo页面链表有固定槽位,记录事务状态,控制undo日志的使用。

若事务数量过多,占用所有undo槽位,系统出现瓶颈。

系统重启时,通过回滚段恢复未完成事务,保证原子性。

undo日志的刷盘时机与redo日志类似,确保数据持久性。

undo日志在事务提交后,根据类型(insert或update)决定是否立即删除。