分布式数据库复习重点.ppt

执行步骤: (1) 设RT=min(Rij), WT= min(Wij) (2) 按下法处理缓冲区中的Rij和Wij a. 若队列中有 (Rij) WT的Rij , 则顺序执行这些Rij,执行完删掉 b. 若队列中有 (Wij) RT的Wij, 则顺序执行这些Wij,执行完删掉 (3) 修改 RT=min(Rij), WT=min(Wij) ,此时的Rij和Wij是队列中剩余的 (4) 重复上述(2)和(3), 直到没有满足条件的操作, 或者: a. 若某个或某些R队列为空时, RT=0; b. 若某个或某些W队列为空时, WT=0 4.3 保守时标法 4 分布式数据库系统并发控制的时标技术 基本思想 保存了已更新数据项的旧值 维护一个数据项的多个版本 通过读取数据项的较老版本来维护可串行性,使得系统可以接受在其他技术中被拒绝的一些读操作 写数据项时,写入一个新版本,老版本依然保存 缺点 需要更多的存储来维持数据库数据项的多个版本 模式分类 基于时标排序 基于两阶段封锁 5.1 多版本概念和思想 5 分布式数据库系统并发控制的多版本技术 数据项X的多版本 X1, X2, X3,…, Xk 系统保存的值 Xi的值 两种时标 Read_TS(Xi): 读时标,成功读取版本Xi的事务的时标,最大的一个 Write_TS(Xi): 写时标,写入版本Xi的值的事务的时标 5.2 基于时标的多版本技术 5 分布式数据库系统并发控制的多版本技术 多版本规则 如果事务T发布一个write_item(X)操作,并且X的版本Xi具有X所有版本中最高的write_TS(Xi),同时write_TS(Xi) = TS(T)且read_TS(Xi)TS(T),那么撤销并回滚T;否则创建X的一个新版本,并且令read_TS(Xi) = write_TS(Xi) = TS(T) 如果事务T发布一个read_item(X)操作,并且X的版本Xi具有X所有版本中最高的write_TS(Xi),同时write_TS(Xi) = TS(T),把Xi的值返回给事务T,并且将read_TS(Xi)的值置为TS(T)和当前read_TS(Xi)中较大的一个 5.2 基于时标的多版本技术 5 分布式数据库系统并发控制的多版本技术 图示 写值 v1 v2 v3 … Vn-1 Vn 5 10 20 92 100 若读 TS(Ri)=95, 则读 92, Vn-1 的值 若写TS(Wk)=93, 则出现了 v1 v2 v3 … Vn-1 Vn 5 10 20 92 100 93 v 于是要拒绝TS(Wk), 否则 TS(Ri)=95读的就是Vn-1, 而不是v的值, 但是按规定 TS(Ri)=95应该读的是v值 三种锁方式 读,写,验证 四种锁状态 读封锁(read_locked) 写封锁(write_locked) 验证封锁(certify_locked) 未封锁(unlocked) 锁相容性 标准模式锁相容性(写锁和读锁) 验证模式锁相容性(写锁、读锁和验证锁) 5.3 采用验证锁的多版本两阶段封锁 5 分布式数据库系统并发控制的多版本技术 5.3 采用验证锁的多版本两阶段封锁 5 分布式数据库系统并发控制的多版本技术 (a) 读/写封锁模式的相容性表 读 写 读 写 是 否 否 否 读 写 验证 读 写 是 是 否 是 否 否 验证 否 否 否 (b) 读/写/验证封锁模式的相容性表 多版本2PL的思想 当只有一个单独的事务T持有数据项上的写锁时,允许其他事务T’读该项X,这是通过给予每个项X的两个版本来实现的 一个版本X是由一个已提交的事务写入的 另一个版本X’是每个事务T获得该数据项上写锁时创建的、 当事务T持有这个写锁时,其他事务可以继续读X的已提交版本 事务T可以写X’的值,而不影响X已提交版本的值 但是,一旦T准备提交,它必须在能

文档评论(0)

1亿VIP精品文档

相关文档