Java教程

(P67)数据库系统下-基于时间戳的并发控制

本文主要是介绍(P67)数据库系统下-基于时间戳的并发控制,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

    • 1.什么是时间戳?
    • 2.基于时间戳的并发控制

1.什么是时间戳?

不用锁,能否进行并发控制?

在这里插入图片描述
时间戳(TIMESTAMP)

  • 一种基于时间的标志,将某一时刻转换成的一个数值。
  • 时间戳具有唯一性和递增性。

事务的时间戳

  • 事务T启动时,系统将该时刻赋予T,为T的时间戳
  • 时间戳可以表征一系列事务执行的先后次序:时间戳小的事务先执行,时间戳大的事务后执行。
  • 利用时间戳,可以不用锁,来进行并发控制

2.基于时间戳的并发控制

借助于时间戳,强制使一组并发事务的交叉执行,等价于一个特定顺序的串行执行。

  • 特定顺序:时间戳由小到大。
  • 如何强制:执行时判断冲突,
    如无冲突,予以执行;
    如有冲突,则撤销事务,并重启该事务;
    此时该事务获得了一个更大的时间戳;
    表明是后执行的事务。
  • 有哪些冲突:
    读-读无冲突;
    读-写或写-读冲突;(先执行的事务后操作,后执行的事务先操作就有可能冲突)
    写-写冲突。

一种简单的调度规则

  • 对DB中的每个数据元素x,系统保留其上的最大时间戳
    RT(x): 即R-timestamp(x)
    读过该数据事务中最大的时间戳, 即最后读x的事务的时间戳。
    WT(x): 即W-timestamp(x)
    写过该数据事务中最大的时间戳, 即最后写x的事务的时间戳。
    事务的时间戳
    TS(T): 即TimeStamp
    基于时间戳的并发控制方法
    (4)基于时间戳的简单调度规则
这篇关于(P67)数据库系统下-基于时间戳的并发控制的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!