- 1、本文档共110页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
并发控制的概念和理论
分布式数据库系统并发控制的封锁技术
分布式数据库系统中的死锁处理
分布式数据库系统并发控制的时标技术
分布式数据库系统并发控制的多版本技术
分布式数据库系统并发控制的乐观方法
分布式数据库中的并发控制
1
通常,数据库总有若干个事务在运行,这些事务可能并发地存取相同的数据,称为事务的并发操作。
当数据库中有多个事务并发执行时,系统必须对并发事务之间的相互作用加以控制,这是通过并发控制机制来实现的。
并发控制就是负责正确协调并发事务的执行,保证这种并发的存取操作不至于破坏数据库的完整性和一致性,确保并发执行的多个事务能够正确地运行并获得正确的结果。
分布式数据库中的并发控制解决多个分布式事务对数据并发执行的正确性,保证数据库的完整性和一致性。比集中式并发控制更复杂。
2
集中式DB环境
T1 T2 … Tn
DB
(一致性
约束)
3
分布式DB环境
X
Y
Z
T1
T2
4
多处理器
并发执行
5
单处理器
非并发执行
6
UPDATE x
70
t6
FIND x
t2
200
t7
UPDATE x
t5
x:=x*2
t4
x:=x-30
t3
FIND x
t1
100
t0
更新事务T2
数据库中X的值
更新事务T1
时间
注:其中FIND表示从数据库中读值,UPDATE表示把值写回到数据库
T1T2,结果140,T2T1,结果170,
得到结果是200,显然是不对的,T1在t7丢失更新操作。
并发控制问题之一:丢失更新
7
FIND x
t2
70
t5
UPDATE x
t4
x:=x-30
t3
FIND x
t1
100
t0
更新事务T2
数据库中A的值
更新事务T1
时间
注:在时间t5事务T2仍认为x的值是100
并发控制问题之二:不一致分析
8
100
t6
x:=x-10
t2
ROLLBACK
t5
FIND x
90
t4
UPDATE x
t3
FIND x
t1
100
t0
更新事务T2
数据库中A的值
更新事务T1
时间
注: 事务T2依赖于事务T1的未完成更新
并发控制问题之三:依赖于未提交更新(读脏数据)
9
事务Ti
Ti= { ?i, i }
其中:
?i : 操作符集合:{Ri(x), Wi(x) } U {Ai, Ci }
Ai, Ci 是最后的操作符,只能是其一
i : (冲突)操作有序执行,Ri(x) i Wi(x) 或 Wi(x) i Ri(x)
10
操作符集
读Ri(x)和写Wi(x)动作序列
冲突动作
R1(A) W2(A) W1(A)
W2(A) R1(A) W2(A)
一个调度
事务的一个操作序列称为一个调度,一般用S表示
比如,S: R1(x),R2(y),W2(y),R2(x),W1(x),W2(x)
11
T1 T2
1 (T1) a ? X 5 (T2) c ? X
2 (T1) X ? a+100 6 (T2) X ? 2c
3 (T1) b ? Y 7 (T2) d ? Y
4 (T1) Y ? b+100 8 (T2) Y ? 2d
先序关系
例子
已知:站点1有数据X,站点2有数据Y
约束:X=Y
12
(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
8 (T2) Y ? 2d
初值: X=Y=0 , 结果: X=Y=200
调度S1
事务内事务间
13
令T= {T1,T2,…,Tn} 是一组事务. T上的调度 S 是具有如下顺序关系T的偏序,即S={?T ,T} :
(1) ?T= ? Ti
(2) T ? ? i
(3) 对于任意一组冲突操作 p,q ?S, 存在 p q 或 q p关系
并发调度定义
i=1
N
N
i=1
14
调度
一组事务的调度必须包含这些事务的所有操作
调度中某个事务的操作顺序必须保持与该事务原有的顺序相同
串行调度
一个事务的第一个动作是在另一个事务的最后一个动作完成后开始. 即调度中事务的各个操作不会交叉, 每个事务相继执行.
一致性调度
调度可以使得数据库从一个一致性状态转变为另一个一致性状态,则称调
文档评论(0)