开发者社区 > 数据库 > 正文

时间戳排序协议的规则是什么?

已解决

时间戳排序协议的规则是什么?

展开
收起
云上静思 2022-09-14 20:03:02 348 0
1 条回答
写回答
取消 提交回答
  • 推荐回答

    规则如下:

    (1)假设事务Ti 执行Read(Q)操作

    • 如果 TS(Ti) < WT(Q),此时读操作无法完成,Ti 回滚。

    • 如果 TS(Ti) ≥WT(Q),此时可执行读操作。

    如果 C(Q)为真,执行请求。并将RT(Q)的值置为TS(Ti)和RT(Q)两者中的最大值。

    如果 C(Q)为假,则等待Wirte(Q)完成或终止。

    (2)假设事务Ti 执行Write(Q)操作

    • 如果 TS(Ti) < RT(Q),则事务Ti 试图写入的值是先前所需要的,此时默认不再需要,Ti 回滚。

    • 如果 TS(Ti) < WT(Q),则事务Ti 试图写入的值已经过时,Ti 回滚。

    • 如果 TS(Ti)≥RT(Q)或TS(Ti)≥WT(Q),则系统执行Write(Q)操作,并将WT(Q)置为TS(Ti),C(Q)置为False。当事务 Ti 执行提交请求时,C(Q)置为True,并且等待数据项Q 被提交的事务将被允许继续执行。

    在以上规则下,对于被回滚的事务读写操作,系统将会赋予它们新的时间戳继续执行。

    以上内容摘自《云原生数据库原理与实践》,这本书可以在电子工业出版社天猫店购买。

    2022-09-14 20:46:36
    赞同 展开评论 打赏
问答地址:

数据库领域前沿技术分享与交流

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载