> 文章列表 > 【数据库】第十一章并发控制知识点汇总

【数据库】第十一章并发控制知识点汇总

【数据库】第十一章并发控制知识点汇总

1、并发操作带来的数据不一致性:1.丢失修改(LostUpdate)2.不可重复读(Non-repeatableRead)3.读“脏”数据(DirtyRead)
2、记号:R(x):读数据x、W(x):写数据x
3、封锁就是事务T在对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。封锁是实现并发控制的一个非常重要的技术
4、基本封锁类型
排它锁(Exclusive Locks,简记为X锁)
共享锁(Share Locks,简记为S锁)
5、排它锁又称为写锁:若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁
6、共享锁又称为读锁:若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁
7、一级封锁协议:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。
正常结束(COMMIT)
非正常结束(ROLLBACK)
一级封锁协议可防止丢失修改,并保证事务T是可恢复的。在一级封锁协议中,如果仅仅是读数据不对其进行修改,是不需要加锁的,所以它不能保证可重复读和不读“脏”数据。
8、使用封锁机制解决丢失修改问题
【数据库】第十一章并发控制知识点汇总
9、二级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁。二级封锁协议可以防止丢失修改和读“脏”数据。
10、使用封锁机制解决读“脏”数据问题
【数据库】第十一章并发控制知识点汇总
11、三级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。三级封锁协议可防止丢失修改、读脏数据和不可重复读。
12、使用封锁机制解决不可重复读问题
【数据库】第十一章并发控制知识点汇总
13、活锁:事务T1封锁了数据R,事务T2又请求封锁R,于是T2等待。T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍然等待。
T4又请求封锁R,当T3释放了R上的封锁之后系统又批准了T4的请求……
T2有可能永远等待,这就是活锁的情形
【数据库】第十一章并发控制知识点汇总
14、避免活锁:采用先来先服务的策略
当多个事务请求封锁同一数据对象时按请求封锁的先后次序对这些事务排队。该数据对象上的锁一旦释放,首先批准申请队列中第一个事务获得锁
15、事务T1封锁了数据R1,T2封锁了数据R2,T1又请求封锁R2,因T2已封锁了R2,于是T1等待T2释放R2上的锁,接着T2又申请封锁R1,因T1已封锁了R1,T2也只能等待T1释放R1上的锁,这样T1在等待T2,而T2又在等待T1,T1和T2两个事务永远不能结束,形成死锁
【数据库】第十一章并发控制知识点汇总
16、预防死锁的方法(1)一次封锁法(2)顺序封锁法
死锁的诊断(1)超时法(2)等待图法