You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于TimeStamp协议的事务回滚后执行顺序规则疑问

时间戳(Timestamp)协议事务回滚执行顺序说明

首先你的判断是正确的:时间戳协议中读操作规则要求,若发起读的事务时间戳 < 所访问数据项的WTS(写时间戳),说明已有更新的事务修改了该数据项,当前读操作拿到的是过期数据,因此T1执行R(T)时遇到WTS(T)=4触发回滚符合协议规则。

回滚后的执行顺序遵循以下核心规则:

  • 事务触发回滚后,会先完成回滚清理动作:清除该事务此前对所有数据项的修改痕迹,同时系统会为回滚的事务分配新的更大的时间戳,其优先级低于所有已分配过时间戳的未终止、已提交事务
  • 调度优先级由事务时间戳决定,时间戳越小优先级越高,优先级高的事务的待执行操作会被优先调度

对应你的场景执行顺序如下:

  1. 完成T1的回滚清理,为T1分配新的时间戳(假设原事务时间戳T1=1、T2=2、T3=3、T4=4,新T1时间戳为5,为当前最大时间戳,优先级最低)
  2. 先执行原调度队列中优先级更高的待执行操作,也就是你提到的未回滚时本要执行的T3-R(N),后续继续按原优先级顺序执行所有无冲突的事务操作
  3. 等所有优先级高于新T1的事务的待执行操作全部处理完成后,再调度T1从自身操作的起始位置重新执行完整操作序列

如果T1重新执行过程中再次遇到读写冲突,会再次触发回滚、分配更大的新时间戳,直到无冲突完成执行或达到回滚次数上限被终止。

内容的提问来源于stack exchange,提问作者Tommy Mei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 14:00:04