第六章 事务管理(并发控制技术1)

第六章 事务管理(并发控制技术1)

锁
两阶段封锁协议

一 并发控制

1)什么是并发? 
2)并发的重要性? 
	1.提高吞吐量和资源利用率
	2.减少等待时间
3)不加控制的并发会怎么样? 
1)实现有效并发的手段? 
基于图
基于时间戳
快照隔离
2)两种锁的区别是什么?为什么需要s锁? 

image-20211020104608828

image-20211020104748318

二 锁与封锁协议

2.1 锁
为何引入锁,不同类型锁的作用? 
image-20211020104842002

引入锁机制:
是为了保证数据的一致性(事务的隔离性)和提高系统的并发处理能力!
或者说,为了保证应用的有效性(两人不会订到同一位置火车票,查看到一个不存在的成绩--如教务处刚误输一个学生的成绩后马上又删除)

S锁已明显增强了并发能力:
因为可能95%以上的应用是读数据,更新应用的频率非常小。没有S锁,系统的发处理能力会大大降低,仅比串行调度略好。

何谓锁相容矩阵,S锁带来多大并发能力?

image-20211020105100041
2.2 封锁协议

指一组加锁规则!

什么是封锁协议,加锁后的调度是什么样? 
image-20211020105158784
这是一个可串行化调度?
image-20211020105505313
2.3 死锁
什么是死锁,如何引起,有何危害?

(直观比喻:两个小孩争抢蛋糕和牛奶的情形)

image-20211020105909347

形成两个事务“相互等待”对方释放资源各自才能往下继续做的僵局!

不加控制的封锁机制,可能引起死锁现象发生!

2.4 活锁
什么是活锁,如何引起,有何危害?
image-20211020110154514

Starvation饿死(活锁) is also possible if concurrency control manager is badly designed. For example:
1)A transaction may be waiting for an X-lock on an item, while a sequence of
other transactions request and are granted an S-lock on the same item.
2) The same transaction is repeatedly rolled back due to deadlocks.

出现一个事务永远(长时间)等待某一数据项被其它事务释放后才能进行封锁的现象!

三 两阶段封锁协议

3.1 两阶段封锁协议
两阶段封锁协议的主要特点?
image-20211020110545270 image-20211020110623904

事务T1-T4都是两阶段封锁协议吗,封锁点在何处?

T1和T2不是两阶段封锁协议,
T3和T4都是两阶段封锁协议!

两阶段封锁协议的主要用途?
image-20211020110744265

示例分析一:两阶段封锁协议&可串行化

两阶段封锁调度P等价于何串行调度?
image-20211020110933881

示例分析二:两阶段封锁&死锁

两阶段封调度Q能够顺利执行完成?

image-20211020111233465

3.2 可串行化与两阶段封锁的关系
Q是冲突可串行化调度吗?
调度Q符合两段锁协议吗?
image-20211020112709054

1、等价于串行调度
T1-》T2-》T3 冲突可串行化

2、不符合!

两阶段封锁协议保证冲突可串行化,
冲突可串行化未必符合两阶段封锁!

3.3 级联调度&两阶段封锁协议p.376
image-20211020112910555

调度P和Q的执行效果有何不同?

image-20211020112937071
3.4 严格两阶段封锁协议p.376
image-20211020113250762

什么是严格两阶段封锁协议,该调度是吗?

严格两阶段封锁协议有何用途?
可保证调度不会出现级联回滚!
image-20211020113338226
3.5 强两阶段封锁协议p.376
image-20211020113433935 image-20211020113538776
3.6 锁转换
什么是带锁转换的两段锁协议?

带锁转换的两阶段封锁协议:
– 第一阶段:
能申请lock-S
能申请lock-X
能将lock-S 转换为lock-X (upgrade升级)
– 第二阶段:
能释放 lock-S
能释放 lock-X
能将lock-X 转换为lock-S(downgrade降级)
这个协议确保了冲突可串行化.

image-20211020113940238

四 封锁机制的实现

锁管理器的作用,主要组成部分?
锁管理器的基本工作原理?
image-20211020114111952 image-20211020114306436
Read(A),Read(B),Read(C),C=A+B,Write(C)
使用两阶段封锁协议为该事务加锁。
posted @ 2021-11-09 16:01  Clancy_gang  阅读(146)  评论(0编辑  收藏  举报