- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8.5 事务调度的可串行性
引言
DBMS需对多个并发事务进行运行调度
能将所有事务串行起来的调度策略不会破坏数据库的不一致性,故而总是正确的
概念
可串行化的调度:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同
可串行性是并发事务操作是否正确的判别准则
事务调度的可串行性
为了保证并发操作的正确性,DBMS的并发控制机制必须提供一定的手段来保证调度是可串行化的
保证事务调度可串行性的策略
事务排它式执行(资源无法充分共享)
两段锁(Two-Phase Locking, 2PL)协议
其它,如时间戳(TimeStamp)方法等
DBMS普通采用封锁方法实现并发操作调度的可串行性
★
并发事务的不同调度策略
T1
T2
T1
T2
T1
T2
Slock B
Y = B = 2
Unlock B
Xlock A
A = Y + 1
写回A(=3)
Unlock A
X = A = 3
Unlock A
写回B(=4)
Unlock B
Slock A
Xlock B
B = X + 1
a 串行调度
c 不可串行化的调度
(结果与a,b不同,错误调度)
Slock B
Y = B = 2
Unlock B
Xlock A
A = Y + 1
写回A(=3)
Unlock A
X = A = 2
Unlock A
写回B(=3)
Unlock B
Slock A
Xlock B
B = X + 1
Slock B
Y = B = 2
Unlock B
Xlock A
A = Y + 1
写回A(=3)
Unlock A
Slock A
X = A = 3
Unlock A
写回B(=4)
Unlock B
Xlock B
B = X + 1
等待
等待
等待
T1
T2
Slock B
Y = B = 3
Unlock B
Xlock A
A = Y + 1
写回A(=4)
Unlock A
X = A = 2
Unlock A
写回B(=3)
Unlock B
Slock A
Xlock B
B = X + 1
d 可串行化的调度
(结果与a相同,正确调度)
T1: 读B; A=B+1; 写回A; T2: 读A; B=A+1; 写回B; A,B初值均为2
b 串行调度
8.6 两段锁协议
概念:事务对数据项的加锁和解锁分为两个阶段完成
获得封锁:在对数据读写之前首先申请并获得封锁;
释放封锁:在释放一个封锁后不再申请和获得任何其他封锁
如遵守两段锁协议的事务
Slock A … Slock B … Xlock C ... Unlock B … Unlock A … Unlock C
如不遵守两段锁协议的事务
Slock A … Unlock A … Slock B ... Xlock C … Unlock C … Unlock B
两段锁协议的性质
两段锁协议是可串行化调度的充分条件,但不是必要条件
若并发事务都遵守两段锁协议,则对这些事务的任何并发调度策略都是可串行化的;
若对并发事务的一个调度是可串行化的,不一定所有事务都符合两段锁协议
两段锁协议可以保证并发事务的正确性,但可能发生死锁
T1
T2
T1
T2
T1
T2
Slock B
读B=2
Y=B
A = Y+1
写回A = 3
Unlock B
Unlock A
Slock A
等待
等待
读A = 3
Unlock B
Unlock A
等待
等待
Y = A
写回B(=4)
Slock B
读B=2
Y=B
Xlock A
A=Y+1
Slock A
等待
等待
读A = 3
Xlock B
B=X+1
等待
等待
X = A
Unlock A
Unlock B
写回A(=3)
Unlock A
Slock B
读B = 2
Xlock A
Slock A
等待
Xlock B
等待
可串行调度
遵守两段锁协议
可串行调度
不遵守两段锁协议
遵守两段锁协议的事务发生死锁
关于两段锁协议
Xlock A
等待
Xlock B
B=Y+1
写回B(=4)
Unlock B
读A = 2
等待
8.7 封锁的粒度
封锁的粒度即封锁对象的大小,如
逻辑单元:属性、元组、关系、索引、数据库等
物理单元:页、块等
封锁粒度对并发控制的影响
封锁粒度越大,并发度越小,系统封锁开销越小;
封锁粒度越小,并发度越高,系统封锁开销越大;
封锁粒度
修改属性?
修改关系?
如何选择封锁粒度?
多粒度封锁
定义:一个系统中同时支持多种封锁粒度供不同事务选择的方法
术语:结点、上层结点、后裔结点
多粒度树
显式封锁(应事务要求直接加锁)
隐式封锁(由于上层结点加锁而加锁)
多粒度封锁的问题
操作办法
对某个数据
您可能关注的文档
最近下载
- 丽声指南针英语名著分级读物Little Red Riding Hood小红帽 教学设计.docx
- 中华人民共和国第十四届运动会游泳比赛成绩册(编排系统版).pdf
- 数字温度计设计论文分析.doc
- 国开(河北)2024年《中外政治思想史》形成性考核1-4答案.docx
- 陕西中考数学第二轮复习策略讲座.ppt
- 东北三省四城市联考暨沈阳市高三质量监测(二)英语含答案解析.docx
- 中国肝癌规范诊疗质量控制指标(2022版).pptx
- 部编人教版八年级下册语文期中考试试卷及答案.docx VIP
- 山东省青岛市市南区2022-2023学年八年级下学期期末物理试卷(含答案).docx VIP
- 财务年度审计服务项目公开招投标书范本.doc VIP
文档评论(0)