7.3封锁与封锁协议 课件(共14张PPT)-《数据库应用技术-SQL Server》同步教学(人民邮电版)

资源下载
  1. 二一教育资源

7.3封锁与封锁协议 课件(共14张PPT)-《数据库应用技术-SQL Server》同步教学(人民邮电版)

资源简介

(共14张PPT)
并发控制
第7章
本章主要内容
本章主要介绍数据库并发操作带来的数据不一致性问题、事务的概念及特性、活锁和死锁问题、数据库系统的封锁技术及封锁协议、并发调度的可串行性与两段锁协议、封锁粒度与多粒度封锁等。
为了充分利用数据库资源,数据库用户对数据库系统并行存取数据,这样就会发生多个用户并发存取同一数据的情况,如果对并发操作不加控制,可能会产生不正确的数据,破坏数据的完整性。因此,数据库管理系统提供并发控制机制,保证数据库的完整性和一致性。
目录
01
事务
02
并发控制
03
封锁与
封锁协议
04
活锁与死锁
05
并发调度的可串行性与两段锁协议
06
封锁粒度与多粒度封锁
07
SQL Server的并发控制机制
封锁与封锁协议
第7章
03
7.3 封锁与封锁协议
实现并发控制的主要技术是封锁。封锁是指当一个事务在对某个数据对象(可以是数据项、记录、数据集以及整个数据库)进行操作之前,必须先获得相应的锁,以保证数据操作的正确性和一致性。
7.3.1 封锁类型
基本的封锁类型有两种:排他锁和共享锁。
排他锁(简记为X锁)又称为写锁。如果事务T对数据对象R加上X锁,则只允许事务T读取和修改数据对象R,其他任何事务都不能再对数据对象R加任何类型的锁,直到事务T释放数据对象R上的锁。这样就保证了其他事务在事务T释放数据对象R上的锁之前,不能再读取和修改数据对象R。
7.3.1 封锁类型
共享锁(简记为S锁)又称为读锁。如果事务T对数据对象R加上S锁,则事务T可以读数据对象R,但不可以修改数据对象R,其他事务只能对数据对象R再加S锁,不能再加X锁,直到事务T释放数据对象R上的S锁。这样就保证了其他事务可以读取数据对象R,但是在事务T释放数据对象R上的S锁之前,不能对数据对象R做任何修改。
7.3.2 封锁协议
当一个事务T要对某个数据对象加锁时,还必须遵守某种规则。例如,何时开始封锁、封锁多长时间、何时释放锁等,这些规则称为封锁协议。对封锁方式规定不同的规则,就形成了不同的封锁协议。
针对并发操作可能带来的3类数据不一致问题,可以通过3类封锁协议在不同程度上予以解决。
7.3.2 封锁协议
1.一级封锁协议
一级封锁协议是指事务T在修改数据对象R之前,必须先对数据对象R申请加X锁,在获得X锁后,该事务才能继续执行,事务T结束后才释放所加的X锁。如果没有获准加X锁,则事务T进入等待状态,直到获得X锁。
一级封锁协议可以防止丢失修改。
7.3.2 封锁协议
表7.4中,由于事务T1先对数据对象R加了X锁,事务T2只能等待事务T1释放数据对象R上的X锁,只有获得了X锁后,才能对数据对象R加X锁进行修改。这样,事务T1对数据的修改值70就不会因事务T2对数据对象R的修改而丢失了。
7.3.2 封锁协议
2.二级封锁协议
二级封锁协议是在一级封锁协议的基础上,再加上事务T在读取数据对象R之前必须对数据对象R申请加S锁,在获得了S锁并读完数据对象R后立即释放所加的S锁。如果未获准加S锁,则该事务进入等待状态,直到获准加S锁后,该事务才继续执行。
二级封锁协议不仅可以防止丢失修改,而且可以防止读脏数据。
7.3.2 封锁协议
表7.5中,事务T1要对数据库中数据对象R的值进行修改,因此先对数据对象R加上X锁。在t2时刻,事务T2想读取数据对象R的值,由于遵循二级封锁协议,需要先对数据对象R加S锁,因为数据对象R上有事务T1的X锁,所以事务T2只能等待事务T1结束后才能读取到数据对象R。当事务T1释放了加在数据对象R上的X锁后,事务T2读到的数据就是事务T1回滚以后的正确数据了。
7.3.2 封锁协议
3.三级封锁协议
三级封锁协议是在一级封锁协议的基础上,再加上事务T在读数据对象R之前必须先对数据对象R申请加S锁,在获得了S锁后,直到该事务T结束才释放所加的S锁。如果未获准加S锁,则该事务T进入等待状态,直到获准加S锁,该事务才继续执行。
由于三级封锁协议中的S锁直到事务结束时才释放,因此三级锁协议中的S锁不仅可以防止丢失修改和读脏数据,还可以防止不可重复读。
7.3.2 封锁协议
表7.6中,事务T1要读取数据库中数据对象R的值,于是先对数据对象R加上S锁,读取到了数据对象R的值为100,读完不释放锁。在t2时刻,事务T2要对数据对象R加X锁进行修改,由于数据对象R上有事务T1加的S锁,事务T2只能等待。在t3时刻,事务T1再次读取数据对象R的值,与上一次读取到的一致。在事务T1正常结束释放了S锁后,事务T2才能对数据对象R进行修改,这样就避免了事务T1不可重复读的问题。

展开更多......

收起↑

资源预览