其他分享
首页 > 其他分享> > undo

undo

作者:互联网

undo 日志作用:
1.redo执行后,重新恢复至dirtypage状态;为保证各trx原子性,由undo日志将未提交trx的操作回滚至数据库一致性状态。
// 3pass恢复的过程可在analysis pass识别出未提交事务,仅检查磁盘page修改状态,并由此执行undo部分,前提是需要将redo log与undo log对应
// 需保证undo写入先于redo,否则仅有redo日志不可回撤
2.实现快照隔离,可重复读。
当trx1读取被并发修改的record1时,
由record1定位最后一次修改其的trx2,
根据trx2对trx1的可见性判断,若trx2与trx1并发,则根据trx2对应的undo log恢复至上一版本
重复至trx1可见版本

undo log同样是保存信息差量,但其是以trx为单位,记录对table的修改,是逻辑日志
undo log直接存于page对于小trx空间有剩,由其他trx复用

快照可见性判断:

trx的生命周期从分配trx id至undo log落盘
在trx开始时,当前未commit的trx,即活跃事务,不可见;另外,在其之后开始的trx不可见,即id > trx id
trx sys中时刻保存并更新前者信息,在各个trx初始化时获取;后者只需简单判断
//undo log段最终以页的形式持久化,页修改以redo log方式预写

trx sys:保存全局信息,索引trx定位
roll back seg:保存history 按trx提交顺序
double write seg:保证undo page写入有效
undo seg:存储undo log,每个trx对应两个undo log seg:insert、update

del record:mark+purge
purge判断undo log可回收条件:undo log对应的trx,其所修改的值不再可见,即当前active trx不访问

标签:trx2,log,undo,seg,trx,redo
来源: https://www.cnblogs.com/qmc1024/p/16519643.html