《数据库中并发控制》PPT课件

《数据库中并发控制》PPT课件

ID:45432870

大小:5.12 MB

页数:29页

时间:2019-11-13

《数据库中并发控制》PPT课件_第1页
《数据库中并发控制》PPT课件_第2页
《数据库中并发控制》PPT课件_第3页
《数据库中并发控制》PPT课件_第4页
《数据库中并发控制》PPT课件_第5页
资源描述:

《《数据库中并发控制》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第十四章并发控制了解并发访问带来的问题理解锁、锁定和锁定协议的相关概念理解活锁与死锁的概念理解锁的粒度掌握Oracle中的锁的分类及特点掌握通过SQL*Plus检测与解决锁争用1目标事务的并发在一般的数据库应用中,不太可能出现在一个时刻有且只有一个事务在操作数据库的情况,对于大多数数据库应用来说,往往都会出现两个或两个以上事务试图修改数据库中的同一个数据的情况,这种情况就被称为事务的并发。2事务并发带来的问题丢失修改脏读不可重复读T1T2T1T2T1T2读A=26读A=26做A=A-6写回A=20读A=26读A=26读A=20读A=26做A=A-6写回A=20

2、做A=A-4写回A=22撤销读A=20做A=A-2写回A=24(数据库中最后为24)(A恢复为26)(A为20,与数据库中的26不相同)锁与锁定锁与锁定是实现并发控制的非常重要的技术。锁是多个用户能够同时操纵同一个数据源而不会出现数据不一致现象的重要保障,是防止其他事务访问指定的资源控制、实现并发控制的一种主要手段。如果一个数据库对象被添加了锁,则此数据库对象就有了一定的访问限制,也就是说对此数据库对象进行了锁定操作。所谓锁定是数据库用来同步多个用户对同一个数据库对象访问的一种机制。通过锁定可以阻止其他事务造成的负面影响,当事务不再依赖锁定的数据资源时,可以将

3、锁释放。3锁定的流程图锁的基本类型独占锁独占锁是对锁定的资源只允许进行锁定操作的事务使用的,独占锁又称为写锁,表示如果某事务在数据库对象A上加了独占锁,则只允许该事务对A进行操作,其他任何事务都既不能对A进行操作或者加锁,直到该事务释放A上的独占锁为止。这就确保不会同时有多个事务对同一数据库对象进行操作。共享锁共享锁是指对不更改或不更新数据的读取操作的事务使用的,共享锁又称为读锁,它是非独占的,允许多个并发事务读取其锁定的数据库对象。如果某个事务在数据库对象A上加了共享锁,则只允许该事务读取A但不能更改A。其他任何其他事务也可以同时对A进行读取操作,但不能更改

4、A,这样就确保了多个事务可以对保护的数据库对象同时进行读操作,但不能同时进行写操作。独占锁和共享锁锁定的示意图6锁定协议一级锁定协议事务在修改数据库对象A之前,必须先对其加独占锁,并直到事务结束时才释放该独占锁,如果事务仅仅是读取A,则不需要加任何锁。二级锁定协议二级锁定协议是在一级锁定协议的基础上,加上事务在读取A之前必须加共享锁,读完后立即释放共享锁。三级锁定协议三级锁定协议是在二级锁定协议的基础上,加上事务在读取A之前必须加共享锁,直到事务结束后才释放共享锁。锁定协议主要分为如下3个级别:不同级别的锁定协议及其作用申请的锁及其作用锁定协议修改时申请独占锁

5、读取时申请共享锁作用操作结束释放事务结束释放操作结束释放事务结束释放不丢失修改不脏读可重复读一级锁定协议是是二级锁定协议是是是是三级锁定协议是是是是是活锁与死锁活锁多个事务并发执行的过程中,可能会存在某个有机会获得锁的事务却永远也没有得到锁,这种现象称为活锁。死锁在多个事务并发执行的过程中,还会出现另外一种现象,即多个并发事务处于相互等待的状态,其中的每一个事务都在等待它们中的另一个事务解除锁定,这样才可以继续执行下去,但任何一个事务都没有释放自己已获得的锁,也就无法获得其他事务已拥有的锁,所以只好相互等待下去。因此产生死锁的原因是两个或多个事务都锁定了一些数

6、据库对象,然后又都需要锁定对方的数据库对象失败而需要等待所造成的。活锁的例子T1T2T3T4LockA成功LockA失败等待等待LockA失败等待UnlockA等待等待等待LockA成功等待LockA失败等待等待UnlockA等待等待LockA成功死锁的例子T1T2LockA1成功LockA2成功LockA2失败等待等待LockA1失败等待等待等待等待等待等待等待等待等待死锁的预防一次锁定法该方法要求每个事务必须一次将所有要使用的数据库对象全部锁定,否则就不继续执行。在之前表14-5中的例子中,如果事务T1一次就将数据库对象A1、A2全部都锁定的话,T1就会执

7、行下去。T2开始是等待的,但在T1执行完毕释放锁之后,T2就可以锁定A1、A2了,也就可以执行下去了。顺序锁定法顺序锁定法要求预先对数据库对象规定一个锁定的顺序,所有事务都按这个顺序来实行锁定。在之前表14-5中的例子中,规定锁定顺序是A1、A2,事务T1和T2都按此顺序锁定,即T2也必须首先锁定A1。当T2请求锁定A1时,由于A1被T1锁定,所以T2只能等待,当T1释放A1和A2上的锁后,T2就可以锁定A1了,也就可以执行下去了。诊断与解除死锁超时法如果一个事务的等待时间超过了规定的时限,就认为发生了死锁。超时法实现简单,但其不足也很明显。一是有可能误判死锁

8、,当事务因为其他原因使得等待时间超过时

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。