TIVK 回滚记录 protect_rollback 细节问题:为何可以不被 protect?

  • 对事务 T 使用 Non-protected rollback 意味着已知事务 T 必定被回滚、不可能有并发的其它东西在尝试提交事务 T;这种情况可能发生在事务自身主动进行 rollback (注意不是 rollback 语句,而是 commit 中途失败之后进入的 rollback)。
  • 对事务 T 使用 Protected rollback,意味着不确定事务 T 是否可能被并发地提交,那么需要保证事务必定被回滚,那么需要保证当前写入的 rollback 信息在任何情况下不可以丢弃;而并发的提交过程看到该 rollback 信息便会失败。这种情况可能发生在事务被另一个事务进行 resolve lock 并决定回滚时。

(注:上述回复来自我的同事)

1 个赞