18143453325 在线咨询 在线咨询
18143453325 在线咨询
所在位置: 首页 > 营销资讯 > 信息时代 > 基于验证的并发控制(数据库)

基于验证的并发控制(数据库)

时间:2022-12-27 14:30:02 | 来源:信息时代

时间:2022-12-27 14:30:02 来源:信息时代

    基于验证的并发控制 : 一种“诊治”型的调度策略。也就是先不加限制地让事务执行,只是记录下已经读的和将要写的数据项的集合,然后在真正写之前,执行一个“有效性检查”的动作,看是否会和其他活动事务产生冲突,如果冲突就让这个事务回滚,否则就真正执行写动作,也称它为乐观并发控制技术(optimistic concurrency control)。与此相反,无论是封锁协议还是时间戳协议都是以“预防”为主的策略,也就是说为了确保数据库的一致性,采用封锁或者回滚的手段,是以延迟操作执行或者终止事务等影响并发度为代价的做法。这种策略在冲突较多的场合是合适的。但是,在很多应用中,特别是只读应用中,其实事务之间没有那么多的冲突发生,对于这样的应用,我们即使不采用任何的并发控制手段,也不一定会破坏数据库的一致性。在这种情况下,基于验证的并发控制策略显得更合适。
假设事务的整个生命周期可划分为三个阶段:
读阶段: 事务在这个阶段读取数据项并将值保存在事务的局部变量中,所有随后的写操作均在这些局部变量上进行,并不对数据库进行真正的更新。
有效性检查阶段: 判断是否可以将局部变量上的更新复制到数据库中去,而不会违反可串行性;
写阶段: 事务在通过有效性检查后,进行实际的数据库更新。否则,将事务回滚。
每个事务的这三个阶段都必须是顺序执行的。相关的记号如下:
Start(T): 事务T开始执行的时间。
Validation(T): 事务T完成读阶段并开始有效性检查阶段的时间。
Finish(T): 事务T完成写阶段的时间。
RS(T): 事务T的读集合。
WS(T): 事务T的写集合。
我们选择Validation(T)作为事务的时间戳,并以这个时间戳的顺序作为可串行性的判断标准。
事务的有效性检查方法如下:
对于任何比T更老的事务Ti:TS(Ti)<TS(T),如果满足以下的条件之一:
(1) Finish(Ti)<Start(T)。这表示Ti在T开始之前就已经完成了。
(2) WS(Ti)∩RS(T)=, 并且 Finish(Ti) <Validation(T)。
(3) WS(Ti)∩RS(T)=,WS(Ti)∩WS(T)=且Validation(Ti)<Validation(T)。
那么就可以保证Ti和T是可串性化的。

关键词:控制,数据,验证

74
73
25
news

版权所有© 亿企邦 1997-2022 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭