数据库系统概论第八章v3并发控制技术课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《数据库系统概论第八章v3并发控制技术课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 系统 概论 第八 v3 并发 控制 技术 课件
- 资源描述:
-
1、第八章第八章并发控制技术并发控制技术并发控制并发控制4为什么要并发执行事务?为什么要并发执行事务?4为什么要进行并发控制?为什么要进行并发控制?4如何进行并发控制?如何进行并发控制?4如何解决并发控制可能带来的问题?如何解决并发控制可能带来的问题?4如何保证并发控制的灵活性和效率?如何保证并发控制的灵活性和效率?为什么要并发执行事务(一)为什么要并发执行事务(一)4串行执行方式串行执行方式T2T1TimeRead B(10)Read A(16)B=B-1(9)A=A-1(15)Write BWrite A为什么要并发执行事务(二)为什么要并发执行事务(二)4并发执行方式并发执行方式T2T1Ti
2、meRead B(10)Read A(16)B=B-1(9)A=A-1(15)Write BWrite A为什么要并发执行事务(三)为什么要并发执行事务(三)4并发执行的优点并发执行的优点 一个事务由不同的步骤组成,所涉及的系统一个事务由不同的步骤组成,所涉及的系统资源也不同。这些步骤可以并发执行,以提资源也不同。这些步骤可以并发执行,以提高系统的高系统的吞吐量吞吐量,改善系统的资源的改善系统的资源的利用率利用率。系统中存在着周期不等的各种事务,串行会系统中存在着周期不等的各种事务,串行会导致难以预测的时延。采用并发会减少导致难以预测的时延。采用并发会减少平均平均响应时间响应时间,特别是改善短
3、事务的响应时间。特别是改善短事务的响应时间。并发执行的问题:丢失修改并发执行的问题:丢失修改4两个事务两个事务T1和和T2读入同一数据并修改,读入同一数据并修改,T2提交的结果破坏了提交的结果破坏了T1提交的结果,导提交的结果,导致致T1的修改被丢失。的修改被丢失。T2T1TimeRead C(200)Read C(200)C=C-100(100)C=C-100(100)Write CWrite C并发执行的问题:不可重复读并发执行的问题:不可重复读4事务事务T1读取某一数据后,事务读取某一数据后,事务T2对其做对其做了修改,当事务了修改,当事务T1再次读取该数据时,再次读取该数据时,得到与前
4、一次不同的值。得到与前一次不同的值。T2T1TimeRead D(1)Read D(1)Read D(0)Write DD=D-1(0)并发执行的问题:并发执行的问题:不可重复读之幻影行不可重复读之幻影行4事务事务T1按照一定条件从数据库中读取了某些数按照一定条件从数据库中读取了某些数据记录后,事务据记录后,事务T2删除了其中部分记录,当删除了其中部分记录,当T1再次按照相同条件读取数据时,发现某些记再次按照相同条件读取数据时,发现某些记录神秘的消失了。录神秘的消失了。T1T2TimeSelect count(*)From SC Where Cno=C1返回返回2行行Select count(
5、*)From SCWhere Cno=C1返回返回1行行并发执行的问题:并发执行的问题:不可重复读之幻影行不可重复读之幻影行4事务事务T1按照一定条件从数据库中读取了某些数按照一定条件从数据库中读取了某些数据记录后,事务据记录后,事务T2插入了一些记录,当插入了一些记录,当T1再再次按照相同条件读取数据时,发现多了一些记次按照相同条件读取数据时,发现多了一些记录。录。T1T2TimeSelect count(*)From SCWhere Cno=C1返回返回2行行Select count(*)From SCWhere Cno=C1返回返回3行行并发执行的问题:读并发执行的问题:读“脏脏”数数据
6、据4读读“脏脏”数据数据(Dirty Read)是指事务是指事务T1修改某一数修改某一数据,并将其写回磁盘,事务据,并将其写回磁盘,事务T2读取同一数据后,读取同一数据后,T1由于某种原因被撤销,这时由于某种原因被撤销,这时T1已修改过的数据恢复已修改过的数据恢复为原值,为原值,T2读到的数据就与数据库中的不一致,则读到的数据就与数据库中的不一致,则T2读到的数据就为读到的数据就为“脏脏”数据。数据。T2T1TimeC=0Read C(10000)Read C(0)C=C+10000(10000)C=10000Write CC=0Rollback可能执行错误的操作并发控制的必要性并发控制的必要
7、性4需要进行并发控制的原因:需要进行并发控制的原因:如果不进行并发控制,当多个事务并发执行如果不进行并发控制,当多个事务并发执行的时候,有可能会相互影响,从而读取或者的时候,有可能会相互影响,从而读取或者存储不正确的数据,破坏数据库的一致性。存储不正确的数据,破坏数据库的一致性。并发控制(一)并发控制(一)4并发执行事务情况分析:并发执行事务情况分析:T1:读或写读或写数据项数据项A,T2:读或写数据项读或写数据项B T1:读读数据项数据项A,T2:读数据项读数据项A T1:写数据项写数据项A,T2:写数据项写数据项A T1:读数据项读数据项A,T2:写数据项写数据项A T1:写数据项写数据项
8、A,T2:读数据项读数据项A4总结,造成并发执行事务问题的原因是:总结,造成并发执行事务问题的原因是:多个事务同时存取同一个数据集合,多个事务同时存取同一个数据集合,并且其中至少有一个事务对该数据集合进行了更新并且其中至少有一个事务对该数据集合进行了更新操作操作没有问题没有问题没有问题没有问题丢失修改丢失修改不可重复读不可重复读读读“脏脏”数数据据并发控制(二)并发控制(二)4解决问题的思路解决问题的思路 避免不同事务同时对同一数据进行可能导致避免不同事务同时对同一数据进行可能导致数据不一致的操作。数据不一致的操作。4采用的技术采用的技术封锁(封锁(Locking)封锁就是事务封锁就是事务T在
9、对某个数据对象如表、记在对某个数据对象如表、记录等操作之前,先向系统发出请求,对其加录等操作之前,先向系统发出请求,对其加锁,从而对该数据对象有了一定的控制,在锁,从而对该数据对象有了一定的控制,在事务事务T释放它的锁之前,其他事务不能更新释放它的锁之前,其他事务不能更新此数据对象。此数据对象。并发控制(三)并发控制(三)4封锁的类型封锁的类型 排它锁(X锁,锁,eXclusive lock):):事务事务T对对数据对象数据对象A加上加上X锁,则只允许锁,则只允许T读取和修读取和修改改A,其它事务对其它事务对A的任何封锁请求都不能的任何封锁请求都不能成功(因而不能读取和修改成功(因而不能读取和
10、修改R),),直至直至T释释放放A上的上的X锁。锁。共享锁(S锁,锁,Share lock):):事务事务T对数据对数据对象对象A加上加上S锁,则事务锁,则事务T可以读取但不能可以读取但不能修改修改A,其它事务只能对其它事务只能对A加加S锁(因而可锁(因而可以读取以读取A),),而不能而不能对对A的加的加X锁(因而不锁(因而不能修改能修改A),),直到直到T释放释放A上的上的S锁。锁。并发控制(四)并发控制(四)相容矩阵相容矩阵不相容请求不相容请求相容请求相容请求并发控制(五)并发控制(五)4一级封锁协议一级封锁协议 事务事务T在修改数据在修改数据R之前必须对其加之前必须对其加X锁,直锁,直到
11、事务结束才释放。事务结束包括正常结束到事务结束才释放。事务结束包括正常结束(COMMIT)和非正常结束和非正常结束(ROLLBACK)。一级封锁协议可以防止丢失修改,并保证事一级封锁协议可以防止丢失修改,并保证事务务T是可恢复的。在一级封锁协议中,如果是可恢复的。在一级封锁协议中,如果仅仅是读数据而不对其进行修改,是不需要仅仅是读数据而不对其进行修改,是不需要对其加锁的,因此它不能保证可重复读和不对其加锁的,因此它不能保证可重复读和不读读“脏脏”数据。数据。并发控制(六)并发控制(六)T1T2XLOCK C成功成功读读C=200XLOCK CC=C-100写回写回C=100COMMITUNLO
12、CK C等待等待等待等待等待等待等待等待XLOCK C成功成功读读C=100C=C-100写回写回C=0COMMITUNLOCK C可以避免丢失修改可以避免丢失修改并发控制(七)并发控制(七)T1T2读读D=1XLOCK D成功成功读读D1D=D-1写回写回D0COMMITUNLOCK D读读D0COMMIT不能避免不可重复读不能避免不可重复读并发控制(八)并发控制(八)T1T2XLOCK C成功成功读读C=0C=C+10000写回写回C读读C=10000ROLLBACKC恢复为恢复为0UNLOCK C不能避免读脏数据不能避免读脏数据并发控制(九)并发控制(九)4二级锁协议二级锁协议 二级锁协
13、议是:一级锁协议加上事务二级锁协议是:一级锁协议加上事务T在读在读取数据取数据R之前必须先对其加之前必须先对其加S锁,读完后即锁,读完后即可释放可释放S锁。锁。二级锁除了防止丢失修改,还可以进一步防二级锁除了防止丢失修改,还可以进一步防止读止读“脏脏”数据。但由于读完后即可释放数据。但由于读完后即可释放S锁,所以不能保证可重复读。锁,所以不能保证可重复读。并发控制(十)并发控制(十)T1T2XLOCK C成功成功读读C=0C=C10000写回写回C10000SLOCK CROLLBACKC恢复为恢复为0UNLOCK C等待等待等待等待等待等待SLOCK C成功成功读读C=0COMMITUNLO
14、CK C不读脏数据不读脏数据并发控制(十一)并发控制(十一)T1T2SLOCK D成功成功读读D=1UNLOCK DXLOCK D成功成功读读D1D=D-1写回写回D0COMMITUNLOCK DSLOCK D成功成功读读D=0COMMITUNLOCK D不能避免不可重复读不能避免不可重复读并发控制(十二)并发控制(十二)4三级锁协议三级锁协议 三级锁协议是:一级锁协议加上事务三级锁协议是:一级锁协议加上事务T在读在读取取R之前必须对其加之前必须对其加S锁,直到事务结束才锁,直到事务结束才释放。三级封锁协议除了防止丢失修改和读释放。三级封锁协议除了防止丢失修改和读“脏脏”数据以外,还进一步防止
15、了不可重复数据以外,还进一步防止了不可重复读。读。并发控制(十三)并发控制(十三)T1T2SLOCK D获得获得读读D=1XLOCK D读读D=1COMMITUNLOCK D等待等待等待等待等待等待获得获得XLOCK D读读D1D=D-1 写回写回D=0COMMITUNLOCK D可重复读可重复读并发控制(十四)并发控制(十四)X锁锁S锁锁一致性保证一致性保证操作操作结束结束释放释放事务事务结束结束释放释放操作操作结束结束释放释放事务事务结束结束释放释放不不丢丢失修失修改改不读不读“脏脏”数据数据可重可重复读复读一级封锁一级封锁协议协议 二级封锁二级封锁协议协议 三级封锁三级封锁协议协议 并发
16、控制(十五)并发控制(十五)4问题:问题:是否使用的锁协议级别越高越好呢?是否使用的锁协议级别越高越好呢?4SQL-92标准中的隔离级别标准中的隔离级别 Read Uncommitted(一级锁协议)一级锁协议)Read Committed(二级锁协议)二级锁协议)Repeatable Read(三级锁协议)三级锁协议)Serializable 4SQL Server中设置隔离级别的方法中设置隔离级别的方法 SET TRANSACTION ISOLATION LEVEL 死锁与活锁(一死锁与活锁(一)T1T2T3T4SLOCK RXLOCK R等待等待SLOCK RUNLOCK R等待等待操作
17、操作SLOCK R等待等待操作操作操作操作等待等待等待等待UNLOCK R操作操作等待等待操作操作活锁活锁死锁与活锁(二)死锁与活锁(二)4死锁死锁(Deadlock)定义定义在数据库运行期间,如果存在一个事务集合在数据库运行期间,如果存在一个事务集合=T0,T1,Tn,使得使得T0等待等待T1持有的持有的数据项锁,数据项锁,Tn-1等待等待Tn持有的数据项锁,持有的数据项锁,Tn等待等待T0持有的数据项锁,则称系统处于死持有的数据项锁,则称系统处于死锁状态,锁状态,称为死锁事务集合。称为死锁事务集合。死锁与活锁(三)死锁与活锁(三)T1T2LOCK R1成功成功对对R1进行操作进行操作LOC
展开阅读全文