封锁协议
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
I I
________________________________________________________________________ _________________________________________________________________________ ________________
可以防止丢失修改和 读“脏”数据
不能保证 可重复读
9.3.2二级封锁协议TiT2① Xlock C
R(C)= 100 C—
C*2 W(C)=200
②
③ ROLLBACK (C恢复为100)
Unlock C
④ Slock C 等待 等
⑤
待 等待 等待
获得Slock C R(C)=100 Commit Unlock C
Database System
数 据库系 统概论
Introduction to Database Systems
主讲人:吴岩 河南理工大学
第九章数据库并发控制
并发操作存在的问题 2,封锁
(3 )封锁协议
9.3封锁协议
含义
在运用S锁和X锁对数据对象加锁时,需要约定一些规则, 例如何时申请X锁或S锁、持锁时间、何时释放等,这些规 则被称为封锁协议。
R(A)=50 Slock B
R(B)=100
A+B=150 ②
③ R(A)=50 R(B)=100 A+B=150 Commit Unlock A Unlock B
④
⑤
Xlock B 等待 等待 等待
等待 等待 等待 等待 获
得Xlock B R(B)=100 B—
B*2 W(B)=200 Commit
并发操作不正确调度带来的数据不一致问题。
9.3封锁协议
—级封锁协议
二级封锁协议
三级封锁协议
•-----------------------------•
9.3.1 —级封锁协议
9.3.1 —级封锁协议
T1
① Xlock A ② R(A)=16 ③ ④ A-A-1
W(A)=15 Commit Unlock A ⑤
T2
Xlock A 等待 等待 等待 等待 获得Xlock A R(A)=15 A-A-1 W(A)=14 Commit Unlock A
③ R(A)=50 R(B)=200 A+B=250
(验算不对)
二级封锁协议不 能
保证可重复读
9.3.3三级封锁协议
含义
事务T在读取数据R之前必须先对其加S锁,在修 改数据之前必须先加上X锁,直到事务结束才释 放所有锁。
可以防止 丢失修改、读“脏”数据和不重复
读
9.3.3三级封锁协议
Ti
T2
① Slock A
Unlock B
三级封锁协议可以防 止丢失修改、读“脏”
数据和不可重复读
9.3封锁协议
X锁
S锁
—致性保证
操作结束 事务结束 操作结束 事务结束 不丢失 不读“脏” 可重
释放
释放
释放
释放 修改 数 据
复读
一级封锁协议
二级封锁协议
三级封锁协议
小结
~二一
•封锁是实现并发控制的重要技术。 •封锁协议描述了对数据对象加锁的规则。 •三个不同级别的封锁协议分别在不同程度上解 决
一级封锁协议可 以防止丢失修改
9.3.1 —级封锁协议
Ti
① R(A)=50 R(B)=100 A+B=150
②
③ R(A)=40 R(B)=100 A+B=140
(验算不对)
T2
获得Xlock A R(A)=50 A—A10 W(A)=40 Commit Unlock A
一级封锁协议不 能保证可重复读
二级封锁协议可以 防止丢失修改和读
“脏”数据
9.3.2二级封锁协议
T1
T2
XlockB 等待 等待 获
得Xlock B
R(B)=100 B—B*2 W(B)=200 Commit Unlock B
① Slock A, B 获得 R(A)=50 R(B)=100 Unlock A, B
② A+B=150 Slock A 得到 Slock B 等待 获得
9.3.1 —级封锁协议
Ti
① Xlock A 获得
② R(A)=16 A-A-1 W(A)=15
③ Unlock A
ROLLBACK
T2
R(A)=15
一级封锁协议不能保 证不读“脏”数据
9.3.2二级封锁协议
含义
事务T要修改数据R必须先加X锁,直到事务结束 才释放X锁;事务T在读取数据R之前必须先对其 加S锁,读完后即可释放S锁。
________________________________________________________________________ _________________________________________________________________________ ________________
可以防止丢失修改和 读“脏”数据
不能保证 可重复读
9.3.2二级封锁协议TiT2① Xlock C
R(C)= 100 C—
C*2 W(C)=200
②
③ ROLLBACK (C恢复为100)
Unlock C
④ Slock C 等待 等
⑤
待 等待 等待
获得Slock C R(C)=100 Commit Unlock C
Database System
数 据库系 统概论
Introduction to Database Systems
主讲人:吴岩 河南理工大学
第九章数据库并发控制
并发操作存在的问题 2,封锁
(3 )封锁协议
9.3封锁协议
含义
在运用S锁和X锁对数据对象加锁时,需要约定一些规则, 例如何时申请X锁或S锁、持锁时间、何时释放等,这些规 则被称为封锁协议。
R(A)=50 Slock B
R(B)=100
A+B=150 ②
③ R(A)=50 R(B)=100 A+B=150 Commit Unlock A Unlock B
④
⑤
Xlock B 等待 等待 等待
等待 等待 等待 等待 获
得Xlock B R(B)=100 B—
B*2 W(B)=200 Commit
并发操作不正确调度带来的数据不一致问题。
9.3封锁协议
—级封锁协议
二级封锁协议
三级封锁协议
•-----------------------------•
9.3.1 —级封锁协议
9.3.1 —级封锁协议
T1
① Xlock A ② R(A)=16 ③ ④ A-A-1
W(A)=15 Commit Unlock A ⑤
T2
Xlock A 等待 等待 等待 等待 获得Xlock A R(A)=15 A-A-1 W(A)=14 Commit Unlock A
③ R(A)=50 R(B)=200 A+B=250
(验算不对)
二级封锁协议不 能
保证可重复读
9.3.3三级封锁协议
含义
事务T在读取数据R之前必须先对其加S锁,在修 改数据之前必须先加上X锁,直到事务结束才释 放所有锁。
可以防止 丢失修改、读“脏”数据和不重复
读
9.3.3三级封锁协议
Ti
T2
① Slock A
Unlock B
三级封锁协议可以防 止丢失修改、读“脏”
数据和不可重复读
9.3封锁协议
X锁
S锁
—致性保证
操作结束 事务结束 操作结束 事务结束 不丢失 不读“脏” 可重
释放
释放
释放
释放 修改 数 据
复读
一级封锁协议
二级封锁协议
三级封锁协议
小结
~二一
•封锁是实现并发控制的重要技术。 •封锁协议描述了对数据对象加锁的规则。 •三个不同级别的封锁协议分别在不同程度上解 决
一级封锁协议可 以防止丢失修改
9.3.1 —级封锁协议
Ti
① R(A)=50 R(B)=100 A+B=150
②
③ R(A)=40 R(B)=100 A+B=140
(验算不对)
T2
获得Xlock A R(A)=50 A—A10 W(A)=40 Commit Unlock A
一级封锁协议不 能保证可重复读
二级封锁协议可以 防止丢失修改和读
“脏”数据
9.3.2二级封锁协议
T1
T2
XlockB 等待 等待 获
得Xlock B
R(B)=100 B—B*2 W(B)=200 Commit Unlock B
① Slock A, B 获得 R(A)=50 R(B)=100 Unlock A, B
② A+B=150 Slock A 得到 Slock B 等待 获得
9.3.1 —级封锁协议
Ti
① Xlock A 获得
② R(A)=16 A-A-1 W(A)=15
③ Unlock A
ROLLBACK
T2
R(A)=15
一级封锁协议不能保 证不读“脏”数据
9.3.2二级封锁协议
含义
事务T要修改数据R必须先加X锁,直到事务结束 才释放X锁;事务T在读取数据R之前必须先对其 加S锁,读完后即可释放S锁。