两段封锁协议-一种具体的基于锁的并发控制方法
- 读写数据之前首先要获得锁,每个事务中的加锁请求先于任何解锁请求
- 每个事务分为加锁段和解锁段。加锁段中不能有解锁请求 解锁段中不能有加锁请求。
- 注意两段封锁协议一定可以保证冲突可串行化。但是可能产生死锁
基于时间戳的并发控制方法
-除了加锁之外我们还可以通过时间戳的方法的控制并发。(基于时间戳的并发控制其实是一种基于撤回的方法)
基于有效性确认的并发控制方法
基于有效性确认的并发控制的方法,用RS(T) WS(T)保存读数据的集合和写数据的集合。事务分为3个阶段进行:一是读阶段 在此阶段当然是读数据元素并且在事务局部地址空间计算写的值。二是有效性确认阶段,调度器通过比较该事务与其他事务的读写集合来确认。三是写阶段事务将写集合中的元素写入数据库。
调度器在调度事务的过程中维护了三个集合:
START集合:事务T开始但是尚未进行有效性确认,就将其开始时间记录。
VAL集合:事务T经过有效性确认单尚未完成写操作,将其确认事件记录。
FIN结合:事务T完成写操作。将其完成时间记录在集合中。
那么什么情况确认、什么情况不予确认呢?
如果一个较早确认的事务正在写较晚事务T的读的数据,那么T的有效性不能确认。
如果一个较早确认的事务的写操作可能在较晚确认事务T的写操作之后,则T的有效性不能确认。
或者总结为以下有效性确认规则:
- 对所有已经经过有效性确认、且在事务T开始之前未完成的事务U,如果RS(T) 交WS(U)为空则予以确认否则不确认。
- 对所有已经经过有效性确认、且在事务T有效性确认之前还未完成的事务,如果WS(T) 交WS(U)为空则予以确认否则不确认。
具体思路:如果我们对一个事务T通过确认规则判别是否予以确认:首先看FIN(U) > START(T) 再看FIN(U) > VAL(T) 。