第10章事务管理与恢复_第1页
第10章事务管理与恢复_第2页
第10章事务管理与恢复_第3页
第10章事务管理与恢复_第4页
第10章事务管理与恢复_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 1北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复第第1010章章 事务管理与恢复事务管理与恢复第五项修练u 第一项修练:自我超越u 第二项修练:改善心智模式u 第三项修练:建立共同愿景u 第四项修练:团队学习u 第五项修练:系统思考 作者:美国商业周刊推崇为当今最有影响力的管理大师之一2022-2-52022-2-52 2北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理

2、与恢复目目 录录事务 10.1并发控制 10.2恢复与备份 10.32022-2-52022-2-53 3北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复问题背景问题背景 n 现实应用中,现实应用中,数据库的操作与操作之间往往具有一定的语义数据库的操作与操作之间往往具有一定的语义和关联性和关联性。数据库应用希望。数据库应用希望将这些有关联的操作当作一个逻将这些有关联的操作当作一个逻辑工作单元辑工作单元看待,看待,要么都执行,要么都不执行要么都执行,要么都不执行。 n 例例10.1

3、飞机订票系统有两个表飞机订票系统有两个表Sale和和Flight,分别记录各售,分别记录各售票点的票点的售票数售票数及全部航班的及全部航班的剩余票数剩余票数: Sale(agentNo, flightNo, date, saledNumber) Flight(flightNo, date, remainNumber)n 现有现有A0010售票点欲出售售票点欲出售F005航班航班2008年年8月月8日机票日机票2张。张。2022-2-52022-2-54 4北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管

4、理与恢复事务管理与恢复问题背景问题背景n 可编制如下程序:可编制如下程序: 查询查询F005航班航班2008年年8月月8日剩余票数日剩余票数A; (1) if (A2) 拒绝操作,并通知票源不足;拒绝操作,并通知票源不足; else 更新更新A0010售票点的售票数;售票点的售票数; 更新更新F005航班的剩余票数;航班的剩余票数;如何用SQL语句分别实现语句(1)和语句(2)?n 语句语句(1)可用可用SQL语句表示为:语句表示为:SELECT remainNumber FROM Flight WHERE flightNo=F005 AND date=2008-08-08(2)2022-2-

5、52022-2-55 5北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复问题背景问题背景n 语句语句(2)是在当是在当F005航班航班2008年年8月月8日的剩余票数大于请求日的剩余票数大于请求票数时更新票数时更新Sale和和Flight表。该更新包括两个表。该更新包括两个update操作:操作: UPDATE Sale SET saledNumber=saledNumber+2 WHERE agentNo=A0010 AND flightNo=F005 AND date=2008

6、-08-08 UPDATE Flight SET remainNumber=remainNumber2 WHERE flightNo=F005 AND date=2008-08-08如果第一个UPDATE语句执行成功,而第二个UPDATE语句执行失败,会发生什么问题呢?2022-2-52022-2-56 6北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复问题背景问题背景n 假设假设F005航班共有航班共有200个座位,个座位,2008年年8月月8日机票已售日机票已售198张张(其中

7、被其中被A0010售出售出20张张),余票,余票2张。张。n 当第当第1个个UPDATE语句执行成功时,即语句执行成功时,即A0010已售票数更新已售票数更新为为22。当系统发生故障重新提供服务时,如果又有售票点请。当系统发生故障重新提供服务时,如果又有售票点请求出售求出售F005航班航班2008年年8月月8日机票日机票2张,由于张,由于F005的剩余票的剩余票数未更新数未更新(仍为仍为2),因此满足其要求又出售了,因此满足其要求又出售了2张。张。n 结果多卖了结果多卖了2张票!张票!出现上述问题的原因是什么? 出现故障后,系统重新提供服务时数据库状态与现实世界状态出现了不一致。对于机票系统来

8、说,一航班的剩余票数加上已售出票数应等于该航班全部座位数。而重新提供服务时,F005的已售票数与剩余票数之和为202(不等于200!),导致多买了2张。 2022-2-52022-2-57 7北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复问题背景问题背景n 为解决上述问题,数据库管理系统引入了为解决上述问题,数据库管理系统引入了事务事务概念,它概念,它将这些有内在联系的操作当作一个逻辑单元看待将这些有内在联系的操作当作一个逻辑单元看待,并采,并采取相应策略取相应策略保证一个逻辑单

9、元内的全部操作保证一个逻辑单元内的全部操作要么都执行要么都执行成功,要么都不执行成功,要么都不执行。n 对数据库用户而言,只需对数据库用户而言,只需将具有完整逻辑意义的一组操将具有完整逻辑意义的一组操作正确地作正确地定义在一个事务之内定义在一个事务之内即可。即可。2022-2-52022-2-58 8北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复事务概念事务概念 n 对于对于用户用户而言,而言,事务事务是是具有完整逻辑意义的数据库操作序列具有完整逻辑意义的数据库操作序列的集合。的

10、集合。n 对于对于数据库管理系统数据库管理系统而言,而言,事务事务则是则是一个一个读写操作序列读写操作序列。这。这些操作是一个不可分割的逻辑工作单元,些操作是一个不可分割的逻辑工作单元,要么都做要么都做,要么都要么都不做不做。n 事务事务是数据库管理系统中是数据库管理系统中竞争资源、并发控制和恢复的基本竞争资源、并发控制和恢复的基本单元单元。 它是由数据库操作语言它是由数据库操作语言(如如SQL)或高级编程语言(如或高级编程语言(如Java、C、C+)提供的)提供的事务开始语句事务开始语句、事务结束语句事务结束语句以及以及由它们包含的全部由它们包含的全部数据库操作语句数据库操作语句组成。组成。

11、2022-2-52022-2-59 9北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复事务结束语句事务结束语句n 事务结束的两种类型:事务结束的两种类型:l事务提交事务提交(commit):将成功完成事务的:将成功完成事务的执行结果执行结果(即更新即更新)永久化永久化,并释放事务占有的全部资源。,并释放事务占有的全部资源。l事务回滚事务回滚(rollback):中止当前事务、:中止当前事务、撤销其对数据库所撤销其对数据库所做的更新做的更新,并释放事务占有的全部资源。,并释放事务占有

12、的全部资源。2022-2-52022-2-51010北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复SQL Server事务模式事务模式n SQL Server数据库提供了三种类型的事务模式:数据库提供了三种类型的事务模式:l显式事务显式事务是指用户是指用户使用使用Transact-SQL事务语句所定义事务语句所定义的事务的事务,其事务语句包括:,其事务语句包括:事务开始事务开始:BEGIN TRANSACTION事务提交事务提交:COMMIT TRANSACTION,COMMIT

13、 WORK事务回滚事务回滚:ROLLBACK TRANSACTION,ROLLBACK WORKl隐式事务隐式事务是指事务提交或回滚后,系统自动开始新的是指事务提交或回滚后,系统自动开始新的事务。事务。该类事务不需要采用该类事务不需要采用BEGIN TRANSACTION语句标识事务的开始。语句标识事务的开始。l自动定义事务自动定义事务:当一个语句成功执行后,它被自动提当一个语句成功执行后,它被自动提交,而当执行过程中出错时,则被自动回滚交,而当执行过程中出错时,则被自动回滚。2022-2-52022-2-51111北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设

14、计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复SQL Server事务定义举例事务定义举例n 例例10.2 利用利用SQL Server提供的显式事务模式定义提供的显式事务模式定义例例10.1中的数据库更新事务。中的数据库更新事务。 BEGIN TRANSACTION UPDATE Sale SET saledNumber=saledNumber+2 WHERE agentNo=A0010 AND flightNo=F005 AND date=2008-08-08 UPDATE Flight SET remainNumber=remainNumber- -

15、2 WHERE flightNo=F005 AND date=2008-08-08 COMMIT TRANSACTION2022-2-52022-2-51212北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复事务特性事务特性 n 为了保证事务为了保证事务并发执行并发执行或或发生故障发生故障时数据库的时数据库的一致性一致性(完整性完整性),事务应具有以下特性:),事务应具有以下特性:l原子性原子性(atomicity)。事务的。事务的所有操作所有操作要么要么全部都被执行,全部都被执行

16、,要么都不被执行。要么都不被执行。l一致性一致性(consistency)。一个单独执行的事务一个单独执行的事务应保证其执行应保证其执行结果的一致性,即总是结果的一致性,即总是将数据库从一个一致性状态转化到将数据库从一个一致性状态转化到另一个一致性状态另一个一致性状态。l隔离性隔离性(isolation)。当。当多个事务并发执行多个事务并发执行时,一个事务的时,一个事务的执行不能影响另一个事务,即执行不能影响另一个事务,即并发执行的各个事务不能互并发执行的各个事务不能互相干扰相干扰。l持久性持久性(durability)。一个。一个事务成功提交事务成功提交后,后,它对数据库的它对数据库的改变必

17、须是永久的改变必须是永久的,即使随后系统出现故障也不会受到影,即使随后系统出现故障也不会受到影响。响。2022-2-52022-2-51313北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复DBMS保证事务特性措施保证事务特性措施n 原子性原子性也称为也称为故障原子性故障原子性或或(故障故障)可靠性可靠性l 由由DBMS通过通过撤销未完成事务对数据库的影响撤销未完成事务对数据库的影响来实现。来实现。n 一致性一致性是指是指单个事务的一致性单个事务的一致性,也称为,也称为并发原子性并

18、发原子性或或正确性正确性l 由编写该事务代码的由编写该事务代码的应用程序员应用程序员负责,但有时也可利用负责,但有时也可利用DBMS提供的提供的数据库完整性约束数据库完整性约束(如触发器如触发器)的自动检查功能来保证的自动检查功能来保证。n 隔离性隔离性也称为也称为执行原子性执行原子性或或可串行化可串行化,可以看作是多个事务,可以看作是多个事务并发执行时的一致性或正确性要求并发执行时的一致性或正确性要求l 由由DBMS的的并发控制模块并发控制模块保证。保证。n 持久性持久性也称为也称为恢复原子性恢复原子性或或恢复可靠性恢复可靠性l 它是利用已记录在它是利用已记录在稳固存储介质稳固存储介质(如如

19、磁盘阵列磁盘阵列)中的恢复信息中的恢复信息(如日志、如日志、备份等备份等)来实现丢失数据来实现丢失数据(如因中断而丢失的存放在主存中但还未保存如因中断而丢失的存放在主存中但还未保存到磁盘数据库中去的数据等到磁盘数据库中去的数据等)的恢复。的恢复。l 它是由它是由DBMS的的恢复管理模块恢复管理模块保证。保证。2022-2-52022-2-51414北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复事务并发执行事务并发执行n 数据库管理系统数据库管理系统允许多个事务并发执行:允许多个事

20、务并发执行:l优点优点增加系统吞吐量增加系统吞吐量(throughput)。吞吐量吞吐量是指是指单位时间系统完成事务单位时间系统完成事务的数量的数量。当一事务需等待磁盘。当一事务需等待磁盘I/O时,时,CPU可去处理其它正在等待可去处理其它正在等待CPU的事务。这样,可减少的事务。这样,可减少CPU和磁盘空闲时间,增加给定时间和磁盘空闲时间,增加给定时间内完成事务的数量。内完成事务的数量。减少平均响应时间减少平均响应时间(average response time)。事务响应时间事务响应时间是指是指事事务从提交给系统到最后完成所需要的时间务从提交给系统到最后完成所需要的时间。事务的执行时间有长

21、。事务的执行时间有长有短,如果按事务到达的顺序依次执行,则短事务就可能会由于有短,如果按事务到达的顺序依次执行,则短事务就可能会由于等待长事务导致完成时间的延长。如果允许并发执行,等待长事务导致完成时间的延长。如果允许并发执行,短事务可短事务可以较早地完成以较早地完成。因此,并发执行可减少事务的平均响应时间。因此,并发执行可减少事务的平均响应时间。l缺点缺点若不对事务的并发执行加以控制,则可能若不对事务的并发执行加以控制,则可能破坏数据库的一致性破坏数据库的一致性。2022-2-52022-2-51515北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理

22、与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复事务并发执行可能出现的问题事务并发执行可能出现的问题n 读脏数据读脏数据。如果事务如果事务T2读取事务读取事务T1修改但未提交修改但未提交的的数据后,事务数据后,事务T1由于某种原因由于某种原因中止而撤销中止而撤销,这时事,这时事务务T2就读取了不一致的数据。数据库中就读取了不一致的数据。数据库中将这种读未将这种读未提交且被撤销的数据为读提交且被撤销的数据为读“脏数据脏数据”。n 丢失更新丢失更新。两个或多个事务都读取了同一数据值并。两个或多个事务都读取了同一数据值并修改,修改,最后提交事务最后提交事务的执行结果覆盖了的执

23、行结果覆盖了前面提交事前面提交事务务的执行结果,从而导致前面事务的更新被丢失的执行结果,从而导致前面事务的更新被丢失。 2022-2-52022-2-51616北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复事务并发执行可能出现的问题事务并发执行可能出现的问题n 不可重复读不可重复读。是指事务。是指事务Ti两次从数据库中读取的结果不两次从数据库中读取的结果不同,可分为三种情况:同,可分为三种情况:l事务事务Ti读取一数据后,读取一数据后,事务事务Tj对该数据进行了更改对该数据进行了

24、更改。当事。当事务务Ti再次读该数据时,则再次读该数据时,则会读到与前一次不同的值会读到与前一次不同的值。l事务事务Ti按某条件读取数据库中某些记录后,按某条件读取数据库中某些记录后,事务事务Tj删除了删除了其中部分记录其中部分记录。当事务。当事务Ti再次按相同条件读取时,再次按相同条件读取时,发现记发现记录数变少了录数变少了。(幻影现象(幻影现象1)l事务事务Ti按某条件读取数据库中某些记录后,按某条件读取数据库中某些记录后,事务事务Tj插入了插入了新的记录新的记录。当事务。当事务Ti再次按相同条件读取时,再次按相同条件读取时,发现记录数发现记录数变多了变多了。(幻影现象(幻影现象2)202

25、2-2-52022-2-51717北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复事务并发执行问题举例事务并发执行问题举例n 例例10.3 设设A航班的剩余票数为航班的剩余票数为10张,有两个事务张,有两个事务T1和和T2同时请求出售该航班机票同时请求出售该航班机票2张和张和3张。它们各自的执行序张。它们各自的执行序列如图列如图10-1所示所示(这里只考虑对航班剩余票数的更新这里只考虑对航班剩余票数的更新)。 T1R(A)A=A-2W(A) T2R(A)A=A-3W(A)图10-1

26、 更新事务T1和T22022-2-52022-2-51818北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复事务并发执行问题举例事务并发执行问题举例n 如果是如果是串行执行串行执行,则不管是,则不管是T1先执行再执行先执行再执行T2(图图10-2(a),还是还是T2先执行再执行先执行再执行T1(图图10-2(b),都可得到正确的执行结,都可得到正确的执行结果,即剩余票数都为果,即剩余票数都为5。 T1R(A)A=A-2W(A) T2R(A)A= A-3W(A) T1R(A)A=A-

27、2W(A)T2R(A)A=A-3W(A)A1088 5A10775(a)(b)图10-2 T1和T2串行执行2022-2-52022-2-51919北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复事务并发执行问题举例事务并发执行问题举例n 读脏数据读脏数据:在图在图10-3中,事务中,事务T1在在T2读取其读取其更新值更新值(8)后后回回滚滚,而,而T2仍然使用读到仍然使用读到T1修改后的值进行运算,得到的修改后的值进行运算,得到的结结果是果是5。但实际上。但实际上T1未执行成功,

28、系统只出售了未执行成功,系统只出售了3张票,张票,余余票数应为票数应为7。 T1R(A)A=A-2W(A)rollback T2R(A)A=A-3W(A)A10885图10-3 T2读脏数据2022-2-52022-2-52020北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复事务并发执行问题举例事务并发执行问题举例n 不可重复读不可重复读:如图:如图10-4所示,所示,T3第一次读时第一次读时余票数为余票数为10张张,第二次读时为第二次读时为8张张,两次读结果不一致。,两次读结果

29、不一致。 T3R(A)R(A)A101088 T1R(A)A=A-2W(A)图10-4 T3不可重复读2022-2-52022-2-52121北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复事务并发执行问题举例事务并发执行问题举例n 丢失更新丢失更新:在图:在图10-5中,中,T1和和T2都读到都读到余票数为余票数为10,由于,由于T1后于后于T2提交,导致提交,导致T2的更新操作没有发生作用,被的更新操作没有发生作用,被T1的的更新更新值值(8)覆盖覆盖。 T1R(A)A=A-2

30、W(A) T2R(A)A=A-3W(A)A1010788图10-5 T2更新丢失 是不是所有并发执行事务都会出现这些问题呢? 2022-2-52022-2-52222北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复事务并发执行得到正确的结果事务并发执行得到正确的结果n 例例10.4 设设A和和B航班的剩航班的剩余票数分别为余票数分别为10和和15,事,事务务T4与与T5并发执行。事务并发执行。事务T4请求出售请求出售A航班机票航班机票2张张和和B航班机票航班机票2张,事务张,事务T

31、5请求出售请求出售A航班机票航班机票3张和张和B航班机票航班机票3张。它们的执张。它们的执行序列如图行序列如图10-6所示。所示。图10-6 T4和T5并发执行T4R(A)A=A-2W(A)R(B)B=B-2W(B)T5R(A)A=A-3W(A)R(B)B=B-3W(B)B15131310A10885n 可以验证图可以验证图10-6中中并发执行并发执行的结的结果与果与T4、T5按先后顺序按先后顺序串行执行串行执行的结果是一样的,也是正确的。的结果是一样的,也是正确的。启示:如果一组并发执行事务的执行结果与它们串行执行得到的结果是相同的,那么就可以认为该并发执行的结果是正确的。2022-2-52

32、022-2-52323北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复事务调度定义事务调度定义n 事务并发执行顺序是随机的,事务并发执行顺序是随机的,将由多个事务操作组将由多个事务操作组成的随机执行序列成的随机执行序列称为一个称为一个调度调度。n 对由一组事务操作组成的调度序列而言,应满足下对由一组事务操作组成的调度序列而言,应满足下列条件:列条件:l 该调度应包括该组事务的该调度应包括该组事务的全部操作全部操作;l 属于属于同一个事务的操作同一个事务的操作应保持应保持在原事务中的

33、执行顺序在原事务中的执行顺序。2022-2-52022-2-52424北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复串行调度串行调度n 定义定义10.1(10.1(串行调度串行调度) ) 在调度在调度S中,如果中,如果属于同一属于同一事务的操作都是相邻的事务的操作都是相邻的,则称,则称S是是串行调度串行调度。n 对由对由n个事务组成的一组事务而言,共有个事务组成的一组事务而言,共有n!种有效种有效串行调度。串行调度。n 事务事务串行执行串行执行可保证数据库的可保证数据库的一致性一

34、致性,如果能判断如果能判断一个一个并发调度并发调度的执行结果等价于一个的执行结果等价于一个串行调度串行调度的结的结果,就称该并发调度可保证数据库的一致性。果,就称该并发调度可保证数据库的一致性。2022-2-52022-2-52525北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复冲突操作与冲突等价冲突操作与冲突等价n 假设调度假设调度S包含两个事务包含两个事务Ti与与Tj,若两个相邻操作,若两个相邻操作Oi Ti,Oj Tj访问访问不同的数据对象不同的数据对象,则,则交换交换Oi

35、与与Oj不会影响调度中不会影响调度中任何操作的结果任何操作的结果。若。若Oi与与Oj访问访问相同的数据对象相同的数据对象,并且有,并且有一个为一个为写操作写操作时时,则,则不能改变它们被调度执行的顺序不能改变它们被调度执行的顺序。 n 定义定义10.210.2 在一调度在一调度S中,如果中,如果Oi与与Oj是不同事务在是不同事务在相同数相同数据对象据对象上的操作上的操作,并且其中,并且其中至少有一个是至少有一个是写操作写操作,则称,则称Oi与与Oj是是冲突操作冲突操作;否则称为;否则称为非冲突操作非冲突操作。n 定义定义10.310.3 如果一如果一调度调度S可以经过交换一系列可以经过交换一系

36、列非冲突操作非冲突操作执行的顺序而得到一个新的调度执行的顺序而得到一个新的调度S,则称,则称S与与S是是冲突等价冲突等价的的(conflict equivalent)。2022-2-52022-2-52626北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复冲突可串行化冲突可串行化 n 定义定义10.410.4 如果一如果一调度调度S与一与一串行串行调度调度是冲突等价的是冲突等价的,则称,则称S是是冲突冲突可串行化可串行化的的(conflict serializable).n 在图在

37、图10-6的调度中,通过交互非的调度中,通过交互非冲突操作可得到图冲突操作可得到图10-7所示的串所示的串行调度行调度,故图,故图10-6的调度的调度是冲突可串行化的。是冲突可串行化的。T4R(A)A=A-2W(AR(B)B=B-2W(B) T5R(A)A=A-3W(A)R(B)B=B-3W(B)图10-7 交换图10-6的非冲突操作后得到的串行调度 2022-2-52022-2-52727北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复冲突可串行化冲突可串行化n 冲突可串行化冲突

38、可串行化仅仅是仅仅是正正确调度的充分条件,并确调度的充分条件,并不是必要条件不是必要条件,即,即冲突冲突可串行化调度执行结果可串行化调度执行结果一定是正确的,而正确一定是正确的,而正确的调度不一定都是冲突的调度不一定都是冲突可串行化的可串行化的。T4R(A)A=A-2W(A)R(B)B=B-2W(B)T6R(B)B=B-3W(B)R(A)A=A-3W(A)B15121210A10885图10-8 不满足冲突可串行化的正确调度2022-2-52022-2-52828北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章

39、 事务管理与恢复事务管理与恢复优先图优先图 n 设设S是一个调度。由是一个调度。由S构造一个有向图,称为构造一个有向图,称为优先图优先图,记为记为G=(V, E),其中,其中V是顶点集,是顶点集,E是边集。是边集。顶点集由顶点集由所有参与调度的事务组成所有参与调度的事务组成,边集由满足下列边集由满足下列3个条件个条件之一的边之一的边TiTj组成组成:lTi执行了执行了Wi(Q)后后Tj执行执行Rj(Q);lTi执行了执行了Ri(Q)后后Tj执行执行Wj(Q);lTi执行了执行了Wi(Q)后后Tj执行执行Wj(Q)。T1T2T2T1(a)(b)图10-9 图10-2的优先图2022-2-5202

40、2-2-52929北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复优先图优先图lT= t1: R1(X) W1(X) C1; t2: R2(X) R2(Y) W2(X) C2; t3: R3(Y) W3(Y) C3 HTR1(X) R2(X) W1(X) R2(Y) C1 W2(X) R3(Y) C2 W3(Y) C3SG(HT): HTR1(X) W1(X) R2(X) R2(Y) C1 W2(X) R3(Y) C2 W3(Y) C3 SG(HT): t1 t2 t3 t1 t2

41、 t32022-2-52022-2-53030北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复基于优先图的冲突可串行化判别基于优先图的冲突可串行化判别n 基于优先图的冲突可串行化判别准则:基于优先图的冲突可串行化判别准则:如果优先图中无如果优先图中无环,则环,则S是冲突可串行化的;如果优先图中有环,则是冲突可串行化的;如果优先图中有环,则S是是非冲突可串行化的。非冲突可串行化的。 n 测试冲突可串行化的算法:测试冲突可串行化的算法:l构建构建S的优先图;的优先图;l采用采用环路测试

42、算法环路测试算法(如基于深度优先搜索的环检测算法)(如基于深度优先搜索的环检测算法)检测检测S中中是否有环是否有环;l若若S包含环,则包含环,则S是是非冲突可串行化的非冲突可串行化的,否则调度,否则调度S是是冲突冲突可串行化的可串行化的。2022-2-52022-2-53131北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复n 例例10.5 设并发调度事务集为:设并发调度事务集为: T=t1: R1(X) W1(X) C1, t2: R2(X) R2(Y) W2(X) C2, t3

43、: R3(Y) W3(Y) C3两个并发调度分别为:两个并发调度分别为: HTR1(X) R2(X) W1(X) R2(Y) C1 W2(X) R3(Y) C2 W3(Y) C3 HTR2(X) R3(Y) R2(Y) W2(X) C2 R1(X) W3(Y) C3 W1(X) C1试判断这两个调度是否是冲突可串行化调度?试判断这两个调度是否是冲突可串行化调度?因此,因此,调度调度HT不是冲突可串行化的不是冲突可串行化的;而;而调度调度HT是冲突可串是冲突可串行化的行化的,它冲突等价于串行调度它冲突等价于串行调度或或。 t1t2t3t2t3t1(a) 调度HT的优先图(b) 调度HT的优先图基

44、于优先图的冲突可串行化判别基于优先图的冲突可串行化判别2022-2-52022-2-53232北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复n 例如例如: lHT=R1(X) W1(X) R2(Y) W2(Y) C2 R1(Y) W1(Y) C1 R3(X) W3(Y) C3 lSG(HT): l因此,因此,调度调度HT是冲突可串行化的是冲突可串行化的,它冲突等价于串行调度它冲突等价于串行调度Ls=(t2, t1, t3) HsT=R2(Y) W2(Y) C2 | R1(X) W

45、1(X) R1(Y) W1(Y) C1 | R3(X) W3(Y) C3 t2 t1 t3 t2 t1 t3基于优先图的冲突可串行化判别基于优先图的冲突可串行化判别2022-2-52022-2-53333北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复发现一个等价的串行调度发现一个等价的串行调度n 例如例如: lHT= R1(X) W1(X) R2(Y) W2(Y) C2 R1(Y) W1(Y) C1 R3(X) W3(Y) C3lHT= R2(Y) W2(Y) C2 R1(X)

46、W1(X) R1(Y) W1(Y) C1 R3(X) W3(Y) C3 t2 t1 t3 lHT= R1(X) W1(X) R2(Y) W2(Y) C2 R1(Y) W1(Y) C1 R3(X) W3(Y) C3lHT= R1(X) W1(X) R2(Y) W2(Y) C2 R1(Y) W1(Y) C1 R3(X) W3(Y) C3?2022-2-52022-2-53434北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复目目 录录事务 10.1并发控制 10.2恢复与备份 10.3

47、2022-2-52022-2-53535北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复并发控制概述并发控制概述n 并发控制机制大体上可分为并发控制机制大体上可分为悲观的悲观的和和乐观的乐观的两种。两种。n 悲观的并发控制方法悲观的并发控制方法认为数据库的一致性经常会受认为数据库的一致性经常会受到破坏,因此到破坏,因此在事务访问数据对象前须采取一定措在事务访问数据对象前须采取一定措施加以控制施加以控制,只有得到访问许可时,才能访问数据,只有得到访问许可时,才能访问数据对象,如对象,

48、如基于封锁的并发控制方法基于封锁的并发控制方法。n 乐观的并发控制方法乐观的并发控制方法则认为数据库的一致性通常不则认为数据库的一致性通常不会遭到破坏,故事务执行时可直接访问数据对象,会遭到破坏,故事务执行时可直接访问数据对象,只在事务结束时才验证数据库的一致性是否会遭到只在事务结束时才验证数据库的一致性是否会遭到破坏破坏,如,如基于有效性验证方法基于有效性验证方法。n 本章介绍本章介绍基于封锁的并发控制方法基于封锁的并发控制方法。2022-2-52022-2-53636北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 1

49、0 章章 事务管理与恢复事务管理与恢复基于封锁方法的基本思想基于封锁方法的基本思想n 基本思想基本思想:当事务当事务T需访问数据对象需访问数据对象Q时,先申请对时,先申请对Q的的锁。锁。如批准获得,则事务如批准获得,则事务T继续执行,继续执行,且此后不允许其且此后不允许其他任何事务修改他任何事务修改Q,直到事务,直到事务T释放释放Q上的锁为止。上的锁为止。n 基本锁类型:基本锁类型:l共享锁共享锁(shared lock, 记为记为S):如果事务):如果事务T获得了数据对获得了数据对象象Q的共享锁,则事务的共享锁,则事务T可读可读Q但不能写但不能写Q。l排它锁排它锁(eXclusive loc

50、k, 记为记为X):如果事务):如果事务T获得了数据获得了数据对象对象Q上的排它锁,则事务上的排它锁,则事务T既可读既可读Q又可写又可写Q。2022-2-52022-2-53737北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复锁相容性锁相容性n “锁相容锁相容”是指如果是指如果Ti已持有数据对象已持有数据对象Q的某类型锁后,事务的某类型锁后,事务Tj也申请对也申请对Q的封锁。如果的封锁。如果允许事务允许事务Tj获得对获得对Q的锁的锁,则称事,则称事务务Tj申请锁类型与事务申请锁类

51、型与事务Ti的持有的持有锁类型相容锁类型相容;否则称为不相容;否则称为不相容。n 基本锁类型的封锁相容性原则:基本锁类型的封锁相容性原则:l共享锁与共享锁共享锁与共享锁相容相容l排它锁与共享锁排它锁与共享锁、排它锁与排它锁排它锁与排它锁是不相容的。是不相容的。X+SXS TiTj图10-12 基本锁类型的相容性矩阵“”表示相容“”表示不相容2022-2-52022-2-53838北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复单个事务封锁举例单个事务封锁举例n 申请和释放锁操作:申

52、请和释放锁操作:lSL(Q)申请申请数据对象数据对象Q上的上的共享锁共享锁;lXL(Q)申请申请数据对象数据对象Q上的上的排它锁排它锁;lUL(Q)释放释放数据对象数据对象Q上的锁。上的锁。n 例例10.6 假设事务在访问完数据对象后假设事务在访问完数据对象后立即释放锁立即释放锁,则,则添加了封锁操作的事务添加了封锁操作的事务T4操作序列如图操作序列如图10-12所示。由所示。由于事务于事务T4要对要对A、B进行读写操作,因此访问进行读写操作,因此访问A和和B之前之前都使用都使用XL操作申请排它锁。这样操作申请排它锁。这样事务事务T4在释放在释放A(或或B)的封锁之前,其他事务不能访问的封锁之

53、前,其他事务不能访问A(或或B)。 2022-2-52022-2-53939北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复 T4XL(A)R(A)A=A-2W(A)UL(A)XL(B)R(B)B=B-2W(B)UL(B)COMMIT图10-13 增加了封锁的事务T4操作序列 封锁能否保证并发执行事务的冲突可串行化?其他事务在此期间不允许访问数据对象A其他事务在此期间不允许访问数据对象B2022-2-52022-2-54040北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算

54、机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复 并发事务封锁举例并发事务封锁举例n 例例10.7 考虑并发事务考虑并发事务T1、T2和和T3,它们申请锁和释,它们申请锁和释放锁的规则是:放锁的规则是:l访问数据对象前根据操作类型申请锁;访问数据对象前根据操作类型申请锁;l访问完后访问完后立即释放锁立即释放锁;l当一个事务释放锁后,由等待时间较长的事务优先获当一个事务释放锁后,由等待时间较长的事务优先获得锁。得锁。它们的一个可能的并发执行过程如图它们的一个可能的并发执行过程如图10-13所示。所示。2022-2-52022-2-5414

55、1北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复 T1XL(A)等待等待等待R(A)A=A-2W(A)UL(A)ROLLBACKT2XL(A)等待等待等待等待等待等待等待R(A)A=A-3W(A)UL(A)COMMITT3SL(A)R(A)UL(A)SL(A)等待等待等待等待等待等待等待等待R(A)UL(A)COMMIT步骤123456789101112131415161718图10-14 T1、T2和T3上锁操作序列该调度存在什么问题?2022-2-52022-2-54242北

56、京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复并发事务封锁举例并发事务封锁举例n 该调度该调度避免了丢失更避免了丢失更新新,即,即不会有多个写不会有多个写事务读取同一数据对事务读取同一数据对象的相同值象的相同值,因为一,因为一个数据对象任何时候个数据对象任何时候只能有一个排它锁。只能有一个排它锁。 T1XL(A)等待等待等待R(A)A=A-2W(A)UL(A)ROLLBACKT2XL(A)等待等待等待等待等待等待等待R(A)A=A-3W(A)UL(A)COMMITT3SL(A)R(

57、A)UL(A)SL(A)等待等待等待等待等待等待等待等待R(A)UL(A)COMMIT步骤123456789101112131415161718图10-14 T1、T2和T3上锁操作序列2022-2-52022-2-54343北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复并发事务封锁举例并发事务封锁举例n 但仍然存在以下问题:但仍然存在以下问题:l 读脏数据读脏数据。如。如T2在步在步骤骤11读了读了T1修改后的修改后的数据,而数据,而T1在步骤在步骤12需需ROLLBACK。

58、T1XL(A)等待等待等待R(A)A=A-2W(A)UL(A)ROLLBACKT2XL(A)等待等待等待等待等待等待等待R(A)A=A-3W(A)UL(A)COMMITT3SL(A)R(A)UL(A)SL(A)等待等待等待等待等待等待等待等待R(A)UL(A)COMMIT步骤123456789101112131415161718图10-14 T1、T2和T3上锁操作序列2022-2-52022-2-54444北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复并发事务封锁举例并发事务封

59、锁举例n 但仍然存在以下问题:但仍然存在以下问题:l 不可重复读不可重复读。如。如T3两两次读到次读到A的值不同。的值不同。 T1XL(A)等待等待等待R(A)A=A-2W(A)UL(A)ROLLBACKT2XL(A)等待等待等待等待等待等待等待R(A)A=A-3W(A)UL(A)COMMITT3SL(A)R(A)UL(A)SL(A)等待等待等待等待等待等待等待等待R(A)UL(A)COMMIT步骤123456789101112131415161718图10-14 T1、T2和T3上锁操作序列2022-2-52022-2-54545北京理工大学珠海学院北京理工大学珠海学院 计算机学院计算机学院

60、 数据库原理与设计数据库原理与设计 张申勇张申勇第第 10 10 章章 事务管理与恢复事务管理与恢复并发事务封锁举例并发事务封锁举例n 但仍然存在以下问题:但仍然存在以下问题:l 不可串行化不可串行化。无论如。无论如何交换非冲突操作,何交换非冲突操作,上述调度都不能等价上述调度都不能等价于于T1、T2和和T3的任何的任何一个串行调度。一个串行调度。出现上述问题的原因是事务过早释放了其持有的锁! T1XL(A)等待等待等待R(A)A=A-2W(A)UL(A)ROLLBACKT2XL(A)等待等待等待等待等待等待等待R(A)A=A-3W(A)UL(A)COMMITT3SL(A)R(A)UL(A)S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论