undo

undo 日志作用:
1.原子性保证(事务中断回滚与恢复回滚)。恢复过程中redo执行后,重新恢复至dirty page状态;为保证各trx原子性,由undo日志将not commit 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复用

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

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

!!!trx:事务状态

posted @ 2022-07-26 09:23  qmchao  阅读(123)  评论(0)    收藏  举报