分布式数据库并发控制.ppt
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FIND x
x:=x*2
70
UPDATE x
200
注:其中FIND表示从数据库中读值,UPDATE表示把值写回到数据库
不可重读/不一致分析
时间 更新事务T1 数据库中A的值 更新事务T2
t0
100
t1
FIND x
t2
t3
x:=x-30
t4
UPDATE x
t5
70
FIND x
注:在时间t5事务T2仍认为x的值是100
先序图 (Precedence Graph)P(S)
• 调度 S 的先序图 P(S)是一个有向图,其中 – 节点: S 中的事务 – 边: Ti Tj 是图中的一条边,当且仅当 p Ti, q Tj 使得 p, q 冲突,并且 p <S q
举例
r3[X] w3[X] S1: r1[X] w1[X] w1[Y]
混合法
加锁法
时序Βιβλιοθήκη Baidu序法
集中式加锁
基本时标排序
主副本加锁 分布式加锁
多版本时标排序 保守时标排序
并发控制算法的分类
Locking
• lock 是控制对数据并发访问的机制 • 最简单的锁是二值锁
– Lock (x) – Unlock (x)
• 常用的是共享/互斥锁(多模态锁)
Locking – 续
• 数据按两种模式加锁 :
• 保证只产生可串调度的机制 • 并发控制机制分类
– 按分配模式(数据方式)
• 完全复制的DB • 部分复制DB或分片的DB
– 按网络类型(通信方式)
• 广播能力的 • 星型网, 环形网
– 同步化原则
• 相互排斥地访问共享数据 • 通过一些准则(协议)对事务排序
并发控制算法
悲观法
乐观法
加锁法
时标排序法
8 (T2) Y 2d
初值: X=Y=0 , 结果: X=Y=200
事务定义
• 事务Ti Ti= { i, <i }
其中
i : 操作符集 {Ri(x), Wi(x) } U {ai, ci }
<i : (冲突)操作有序执行 Ri(x) <i Wi(x) 或 Wi(x) <i Ri(x)
调度定义
T2 T1 T3
无环,是可串调度。
可串性理论扩展
• 可串性理论可以直接扩展到无重复副本的 分布式数据库中。
– 事务在每个站点上的执行调度称作局部调度 – 如果数据库无重复副本的分布式数据库,并且
每个局部调度都是可串调度,只要这些局部调 度的序一致,则它们的并(全局调度)也是可 串调度
并发控制机制
这3个事务的一个调度:
S={W2(x),W2(y),R2(z),C2,R1(x),W1(x),C1,R3(x),R3(y),R3(z),C3} 先序图:
T2
T1
T3
无环, S是串行调度。
另外一个调度S’:
S={W2(x), R1(x),W1(x),C1,R3(x), W2(y), R3(y), R2(z), C2,R3(z),C3} 先序图:
原有的顺序相同
• 串行调度
一个事务的第一个动作是在另一个事务的最后一 个动作完成后开始. 即调度中事务的各个操作 不会交叉, 每个事务相继执行.
举例
(T1) r1[X] W1[X] (T2) r2[X] W2[Y] W2[X] (T3) r3[X] W3[X] W3[Y] W3[Z]
r2[X] W2[Y] W2[X] S1: r3[X] W3[X] W3[Y] W3[Z]
– 互斥 (X) 模式. 如果数据项既可以读也可以写.
则要用 lock-X 申请X模式锁
– 共享 (S) 模式. 如果数据项只可以读.则要用
3
(T1) b Y
7 (T2) d Y
4
(T1) Y b+100
8 (T2) Y 2d
先序关系
调度S1
(X站点)
(Y站点)
事务内 事务间
1 (T1) a X
2 (T1) X a+100
5 (T2) c X
3 (T1) b Y
6 (T2) X 2c
4 (T1) Y b+100
7 (T2) d Y
r2[X] w2[Y]
P(S1): T2 T1 T3
可串性理论
定理: 调度 S 冲突可串,当且仅当其先序图 P(S) 是无环图.
举例
• 考虑如下3个事务:
T1: Read(x); Write(x); Commit; T2: Write(x); Write(y); Read(z); Commit; T3: Read(x); Read(y); Read(z); Commit;
令T= {T1,T2,…,Tn} 是一组事务. T上的调度 S 是具 有如下顺序关系<S的偏序:
(1)
S
=
N i=1
Ti
(2) <S
< N
i=1 i
(3) 对于任意一组冲突操作 p,q S, 存在 p <S q 或 q <S p关系
调度定义-续
• 调度
– 一组事务的调度必须包含这些事务的所有操作 – 调度中某个事务的操作顺序必须保持与该事务
读脏数据
时间 更新事务T1 数据库中A的值 更新事务T2
t0
100
t1
FIND x
t2
x:=x-10
t3
UPDATE x
t4
90
t5
ROLLBACK
t6
100
FIND x
注: 事务T2依赖于事务T1的未完成更新
集中式DB环境
T1 T2 … Tn
DB (一致性 约束)
分布式DB环境
T1
T2
X
Y
Z
r1[X] W1[X]
冲突可串
• 如果一个调度是冲突等价于某个串行调度, 则该调度称为冲突可串。
也就是说,该调度可以通过一系列非冲突动作 的交换操作使其成为串行调度
• 调度等价
S1与S2等价, 也就是说, 对于冲突操作, <Oi, Oj>, Oi < Oj在S1中成立, 同时 Oi < Oj 在S2中也成立
第六章 分布式数据库并发控制
• 多处理器
并发执行
CPU1 CPU2
T1 T2
Time
并发执行-续.
• 单处理器
CPU
T1
T2 T1
T2
t1
t2
t3
t4
Time
更新丢失
时间 更新事务T1 数据库中X的值 更新事务T2
t0
t1
FIND x
t2
t3
x:=x-30
t4
t5
UPDATE x
t6
t7
100
概念
• 事务 读ri(x)和写wi(x)动作序列
• 冲突动作 r1(A) w2(A) w1(A) w2(A) r1(A) w2(A)
• 调度
事务动作的执行序列
举例
已知:站点1有数据X,站点2有数据Y 约束:X=Y
T1
T2
1
(T1) a X
5 (T2) c X
2
(T1) X a+100
6 (T2) X 2c