数据库的事务我懂了吗(3)

两段封锁协议-一种具体的基于锁的并发控制方法

  • 读写数据之前首先要获得锁,每个事务中的加锁请求先于任何解锁请求
  • 每个事务分为加锁段和解锁段。加锁段中不能有解锁请求 解锁段中不能有加锁请求。
  • 注意两段封锁协议一定可以保证冲突可串行化。但是可能产生死锁

基于时间戳的并发控制方法

-除了加锁之外我们还可以通过时间戳的方法的控制并发。(基于时间戳的并发控制其实是一种基于撤回的方法)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基于有效性确认的并发控制方法

基于有效性确认的并发控制的方法,用RS(T) WS(T)保存读数据的集合和写数据的集合。事务分为3个阶段进行:一是读阶段 在此阶段当然是读数据元素并且在事务局部地址空间计算写的值。二是有效性确认阶段,调度器通过比较该事务与其他事务的读写集合来确认。三是写阶段事务将写集合中的元素写入数据库。
调度器在调度事务的过程中维护了三个集合:
START集合:事务T开始但是尚未进行有效性确认,就将其开始时间记录。
VAL集合:事务T经过有效性确认单尚未完成写操作,将其确认事件记录。
FIN结合:事务T完成写操作。将其完成时间记录在集合中。

那么什么情况确认、什么情况不予确认呢?
如果一个较早确认的事务正在写较晚事务T的读的数据,那么T的有效性不能确认。
如果一个较早确认的事务的写操作可能在较晚确认事务T的写操作之后,则T的有效性不能确认。
或者总结为以下有效性确认规则:

  1. 对所有已经经过有效性确认、且在事务T开始之前未完成的事务U,如果RS(T) 交WS(U)为空则予以确认否则不确认。
  2. 对所有已经经过有效性确认、且在事务T有效性确认之前还未完成的事务,如果WS(T) 交WS(U)为空则予以确认否则不确认。
    具体思路:如果我们对一个事务T通过确认规则判别是否予以确认:首先看FIN(U) > START(T) 再看FIN(U) > VAL(T) 。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值