数据库技术讲义 第8章 并发控制

数据库技术讲义 第8章 并发控制

ID:43215035

大小:243.50 KB

页数:26页

时间:2019-10-03

数据库技术讲义 第8章 并发控制_第1页
数据库技术讲义 第8章 并发控制_第2页
数据库技术讲义 第8章 并发控制_第3页
数据库技术讲义 第8章 并发控制_第4页
数据库技术讲义 第8章 并发控制_第5页
资源描述:

《数据库技术讲义 第8章 并发控制》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第八章并发控制前言数据库是一个共享资源.应允许多个用户程序并行地存取数据库.交叉并发方式、同时并发方式当多个用户程序并发地存取同一数据的情况下,若对并发操作不加以控制,就会存取和存储不正确的数据,破坏数据库的完整性.并发控制:用正确的方式调度并发操作,避免造成数据的不一致性,使一个用户事务的执行不受其他事务的干扰.并发控制的主要方法:封锁机制8.1并发控制概述为了保证事务的隔离性和一致性,必须对事务的并发控制加以控制,首先考虑一个例子:1.甲事务读出某航班的机票余额A=162.乙事务读出同一航班的机票余额A=163.甲卖出一张机票,A=A-1,这时A=15,把A写回数据库4.乙也卖

2、出一张机票,A=A-1,这时A=15,把A写回数据库8.1并发控制概述在这种情况下,卖出两张机票,但数据库中机票的数量只减少了1。这时发生数据库的不一致,这种不一致是由并发操作引起的。仔细分析并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读“脏”数据。8.1并发控制概述1.丢失修改两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了T1的结果,导致T1修改丢失。T1T2读A=16读A=16A=A-1写回A=15A=A-1写回A=158.1并发控制概述2.不可重复读不可重复读是指事务T1读取数据后,事务T2执行更新操作,是T1无法再现前一次读取结果。具体讲,不可重复

3、读包括三种情况:①事务T1读取某一数据后,事务T2对其做了修改,当事务T1再次读取该数据时,得到与前一次不同的值。8.1并发控制概述T1T2读A=50读B=100求和=150读B=100B=B*2写回B=200读A=50读B=200求和=2508.1并发控制概述②事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中部分记录,当T1再次按相同条件读取数据时,发现某些记录消失。③事务T1按一定条件从数据库中读取数据后,事务T2插入了一些记录,当T1再次按相同条件读取时,发现多了一些记录。后两种不可重复读有时也称为幻影现象。8.1并发控制概述3.读“脏”数据读“脏”数据是

4、指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,这时T1已修改过的数据恢复原值,T2读到的数据与数据库中的数据不一致,则T2读到的数据就为“脏”数据。8.1并发控制概述T1T2读C=100C=C*2写回C读C=200ROLLBACKC恢复为1008.1并发控制概述产生上述三类数据不一致性的主要原因是并发操作破坏了事务的隔离性。并发控制就是要用正确的方式调度并发操作,使一个用户事务的执行不受其它事务的干扰,从而避免造成数据的不一致性。并发控制的主要技术是封锁。8.2封锁封锁是实现并发控制的一个非常重要的技术。所谓封锁就是事务T在对某个数据对象例

5、如表、记录等操作之前,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。基本的锁类型有两种:排它锁和共享锁。8.3封锁协议在运用X锁和S锁对数据对象加锁时,还需要约定一些规则,例如,何时申请X锁或S锁、持锁时间、何时释放等,称这些规则为封锁协议。8.3封锁协议一、一级封锁协议一级封锁协议是:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。二、二级封锁协议二级封锁协议是:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁。三、三级封锁协议三级封锁协议是:一级封锁协议加上事务T

6、在读取数据R之前必须先对其加S锁,直到事务结束才释放。8.4活锁和死锁一、活锁如果事务T1封锁了数据R,事务T2又申请封锁R,于是T2等待。T3也申请封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍然等待。然后T4申请R…..,可能造成T2永远等待,这就是活锁。避免活锁最简单的方法是先来先服务。8.4活锁和死锁二、死锁多个事务互相竞争资源而造成的互相等待即死锁。解决死锁问题主要有两种方法:一类是死锁的预防;一类是允许产生死锁,采取一定手段定期检测,如果有死锁则解除。8.4活锁和死锁1.死锁的预防:一次封锁法顺序封锁法2.死锁的诊断与解除超时法等待图法8.5并发调度

7、的可串行性并行事务中,并行操作的调度是随机的几个并行执行的事务,当且仅当其结果与按某一次序串行地执行的结果相同时,则称他们的并行执行是正确的。8.5并发调度的可串行性串行调度:每个事务的基本操作都连在一起,没有和其他事务的操作交错执行。当且仅当某组事务的一定交叉调度产生的结果和这些事务的某一串行调度的结果相同,则这个交叉调度是可串行化的。可串行性(Serializability)是并行事务正确性的准则,规定:一给定的并发调度,当且仅当它是可串行化的,才认为是正确调度。

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

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

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