数据库系统概论第八章v3并发控制技术.ppt

数据库系统概论第八章v3并发控制技术.ppt

  1. 1、本文档共51页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八章 并发控制技术 并发控制 为什么要并发执行事务? 为什么要进行并发控制? 如何进行并发控制? 如何解决并发控制可能带来的问题? 如何保证并发控制的灵活性和效率? 为什么要并发执行事务(一) 串行执行方式 为什么要并发执行事务(二) 并发执行方式 为什么要并发执行事务(三) 并发执行的优点 一个事务由不同的步骤组成,所涉及的系统资源也不同。这些步骤可以并发执行,以提高系统的吞吐量,改善系统的资源的利用率。 系统中存在着周期不等的各种事务,串行会导致难以预测的时延。采用并发会减少平均响应时间,特别是改善短事务的响应时间。 并发执行的问题:丢失修改 两个事务T1和T2读入同一数据并修改, T2提交的结果破坏了T1提交的结果,导致T1的修改被丢失。 并发执行的问题:不可重复读 事务T1读取某一数据后,事务T2对其做了修改,当事务T1再次读取该数据时,得到与前一次不同的值。 并发执行的问题: 不可重复读之幻影行 事务T1按照一定条件从数据库中读取了某些数据记录后,事务T2删除了其中部分记录,当T1再次按照相同条件读取数据时,发现某些记录神秘的消失了。 并发执行的问题: 不可重复读之幻影行 事务T1按照一定条件从数据库中读取了某些数据记录后,事务T2插入了一些记录,当T1再次按照相同条件读取数据时,发现多了一些记录。 并发执行的问题:读“脏”数据 读“脏”数据(Dirty Read) 是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,这时T1已修改过的数据恢复为原值,T2读到的数据就与数据库中的不一致,则T2读到的数据就为“脏”数据。 并发控制的必要性 需要进行并发控制的原因: 如果不进行并发控制,当多个事务并发执行的时候,有可能会相互影响,从而读取或者存储不正确的数据,破坏数据库的一致性。 并发控制(一) 并发执行事务情况分析: T1:读或写数据项A, T2:读或写数据项B T1:读数据项A, T2:读数据项A T1:写数据项A, T2:写数据项A T1:读数据项A, T2:写数据项A T1:写数据项A, T2:读数据项A 总结,造成并发执行事务问题的原因是: 多个事务同时存取同一个数据集合, 并且其中至少有一个事务对该数据集合进行了更新操作 并发控制(二) 解决问题的思路 避免不同事务同时对同一数据进行可能导致数据不一致的操作。 采用的技术—封锁(Locking) 封锁就是事务T在对某个数据对象如表、记录等操作之前,先向系统发出请求,对其加锁,从而对该数据对象有了一定的控制,在事务T释放它的锁之前,其他事务不能更新此数据对象。 并发控制(三) 封锁的类型 排它锁(X锁,eXclusive lock):事务T对数据对象A加上X锁,则只允许T读取和修改A,其它事务对A的任何封锁请求都不能成功(因而不能读取和修改R),直至T释放A上的X锁。 共享锁(S锁,Share lock):事务T对数据对象A加上S锁,则事务T可以读取但不能修改A,其它事务只能对A加S锁(因而可以读取A),而不能对A的加X锁(因而不能修改A),直到T释放A上的S锁。 并发控制(四) 并发控制(五) 一级封锁协议 事务T在修改数据R之前必须对其加X锁,直到事务结束才释放。事务结束包括正常结束(COMMIT)和非正常结束(ROLLBACK)。 一级封锁协议可以防止丢失修改,并保证事务T是可恢复的。在一级封锁协议中,如果仅仅是读数据而不对其进行修改,是不需要对其加锁的,因此它不能保证可重复读和不读“脏”数据。 并发控制(六) 并发控制(七) 并发控制(八) 并发控制(九) 二级锁协议 二级锁协议是:一级锁协议加上事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁。 二级锁除了防止丢失修改,还可以进一步防止读“脏”数据。但由于读完后即可释放S锁,所以不能保证可重复读。 并发控制(十) 并发控制(十一) 并发控制(十二) 三级锁协议 三级锁协议是:一级锁协议加上事务T在读取R之前必须对其加S锁,直到事务结束才释放。三级封锁协议除了防止丢失修改和读“脏”数据以外,还进一步防止了不可重复读。 并发控制(十三) 并发控制(十四) 并发控制(十五) 问题: 是否使用的锁协议级别越高越好呢? SQL-92标准中的隔离级别 Read Uncommitted(一级锁协议) Read Committed(二级锁协议) Repeatable Read(三级锁协议) Serializable SQL Server中设置隔离级别的方法 SET TRANSACTION ISOLATION LEVEL 隔离级别 死锁与活锁(一) 死锁与活锁(二) 死锁(Deadlock) 定义 在数据库运行期间,如果存在一个事务集合?={T0,T1,…,Tn

文档评论(0)

awang118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档