本文主要是介绍(P67)数据库系统下-基于时间戳的并发控制,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
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)数据库系统下-基于时间戳的并发控制的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!