事务管理与恢复课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《事务管理与恢复课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 事务管理 恢复 课件
- 资源描述:
-
1、事务管理与恢复目目 录录事务事务 10.1并发控制并发控制 10.2恢复与备份恢复与备份 10.3问题背景问题背景 n 现实应用中,现实应用中,数据库的操作与操作之间往往具有一定的语义数据库的操作与操作之间往往具有一定的语义和关联性和关联性。数据库应用希望。数据库应用希望将这些有关联的操作当作一个逻将这些有关联的操作当作一个逻辑工作单元辑工作单元看待,看待,要么都执行,要么都不执行要么都执行,要么都不执行。n 例例10.1 飞机订票系统有两个表飞机订票系统有两个表Sale和和Flight,分别记录各售,分别记录各售票点的票点的售票数售票数及全部航班的及全部航班的剩余票数剩余票数:Sale(ag
2、entNo,flightNo,date,saledNumber)Flight(flightNo,date,remainNumber)n 现有现有A0010售票点欲出售售票点欲出售F005航班航班2008年年8月月8日机票日机票2张。张。问题背景问题背景n 可编制如下程序:可编制如下程序:查询查询F005航班航班2008年年8月月8日剩余票数日剩余票数A;(1)if (A2)拒绝操作,并通知票源不足;拒绝操作,并通知票源不足;else 更新更新A0010售票点的售票数;售票点的售票数;更新更新F005航班的剩余票数;航班的剩余票数;如何用如何用SQLSQL语句分别实现语句语句分别实现语句(1)(
3、1)和语句和语句(2)(2)?n 语句语句(1)可用可用SQL语句表示为:语句表示为:SELECT remainNumber FROM Flight WHERE flightNo=F005 AND date=2008-08-08(2)问题背景问题背景n 语句语句(2)是在当是在当F005航班航班2008年年8月月8日的剩余票数大于请求日的剩余票数大于请求票数时更新票数时更新Sale和和Flight表。该更新包括两个表。该更新包括两个update操作:操作:UPDATE Sale SET saledNumber=saledNumber+2 WHERE agentNo=A0010 AND flig
4、htNo=F005 AND date=2008-08-08 UPDATE Flight SET remainNumber=remainNumber2 WHERE flightNo=F005 AND date=2008-08-08如果第一个如果第一个UPDATEUPDATE语句执行语句执行成功成功,而第二个,而第二个UPDATEUPDATE语句执行语句执行失败失败,会发生什么问题呢?会发生什么问题呢?问题背景问题背景n 假设假设F005航班共有航班共有200个座位,个座位,2008年年8月月8日机票已售日机票已售198张张(其中被其中被A0010售出售出20张张),余票,余票2张。张。n 当第当
5、第1个个UPDATE语句执行成功时,即语句执行成功时,即A0010已售票数更新为已售票数更新为22。当系统发生故障重新提供服务时,如果又有售票点请求。当系统发生故障重新提供服务时,如果又有售票点请求出售出售F005航班航班2008年年8月月8日机票日机票2张,由于张,由于F005的剩余票数的剩余票数未更新未更新(仍为仍为2),因此满足其要求又出售了,因此满足其要求又出售了2张。张。n 结果多卖了结果多卖了2张票!张票!出现上述问题的原因是什么?出现上述问题的原因是什么?出现故障后出现故障后,系统重新提供服务时,系统重新提供服务时数据库状态数据库状态与与现实世界状态现实世界状态出出现了现了不一致
6、不一致。对于机票系统来说,一航班的剩余票数加上已售出票数。对于机票系统来说,一航班的剩余票数加上已售出票数应等于该航班全部座位数。而重新提供服务时,应等于该航班全部座位数。而重新提供服务时,F005F005的已售票数与剩的已售票数与剩余票数之和为余票数之和为202(202(不等于不等于200!)200!),导致多买了,导致多买了2 2张。张。问题背景问题背景n 为解决上述问题,数据库管理系统引入了为解决上述问题,数据库管理系统引入了事务事务概念,它概念,它将这些有内在联系的操作当作一个逻辑单元看待将这些有内在联系的操作当作一个逻辑单元看待,并采,并采取相应策略取相应策略保证一个逻辑单元内的全部
7、操作保证一个逻辑单元内的全部操作要么都执行要么都执行成功,要么都不执行成功,要么都不执行。n 对数据库用户而言,只需对数据库用户而言,只需将具有完整逻辑意义的一组操将具有完整逻辑意义的一组操作正确地作正确地定义在一个事务之内定义在一个事务之内即可。即可。事务概念事务概念 n 对于对于用户用户而言,而言,事务事务是是具有完整逻辑意义的数据库操作序列具有完整逻辑意义的数据库操作序列的集合。的集合。n 对于对于数据库管理系统数据库管理系统而言,而言,事务事务则是则是一个一个读写操作序列读写操作序列。这。这些操作是一个不可分割的逻辑工作单元,些操作是一个不可分割的逻辑工作单元,要么都做要么都做,要么都
8、要么都不做不做。n 事务事务是数据库管理系统中是数据库管理系统中竞争资源、并发控制和恢复的基本竞争资源、并发控制和恢复的基本单元单元。它是由数据库操作语言它是由数据库操作语言(如如SQL)或高级编程语言(如或高级编程语言(如Java、C、C+)提供的)提供的事务开始语句事务开始语句、事务结束语句事务结束语句以及以及由它们包含的全部由它们包含的全部数据库操作语句数据库操作语句组成。组成。事务结束语句事务结束语句n 事务结束的两种类型:事务结束的两种类型:l事务提交事务提交(commit):将成功完成事务的:将成功完成事务的执行结果执行结果(即更新即更新)永久化永久化,并释放事务占有的全部资源。,
9、并释放事务占有的全部资源。l事务回滚事务回滚(rollback):中止当前事务、:中止当前事务、撤销其对数据库所撤销其对数据库所做的更新做的更新,并释放事务占有的全部资源。,并释放事务占有的全部资源。SQL Server事务模式事务模式n SQL Server数据库提供了三种类型的事务模式:数据库提供了三种类型的事务模式:l显式事务显式事务是指用户是指用户使用使用Transact-SQL事务语句所定义事务语句所定义的事务的事务,其事务语句包括:,其事务语句包括:事务开始事务开始:BEGIN TRANSACTION事务提交事务提交:COMMIT TRANSACTION,COMMIT WORK事务
10、回滚事务回滚:ROLLBACK TRANSACTION,ROLLBACK WORKl隐式事务隐式事务是指事务提交或回滚后,系统自动开始新的是指事务提交或回滚后,系统自动开始新的事务。事务。该类事务不需要采用该类事务不需要采用BEGIN TRANSACTION语句标识事务的开始。但必须有显示式结束。语句标识事务的开始。但必须有显示式结束。l自动定义事务自动定义事务:当一个语句成功执行后,它被自动提当一个语句成功执行后,它被自动提交,而当执行过程中出错时,则被自动回滚交,而当执行过程中出错时,则被自动回滚。SQL Server事务定义举例事务定义举例n 例例10.2 利用利用SQL Server提
11、供的显式事务模式定义提供的显式事务模式定义例例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-2 WHERE flightNo=F005 AND date=2008-08-08 COMMIT TRANSACTION事务特性事务特性 n 为了保证事务为了保证事务并发执行并发执行
12、或或发生故障发生故障时数据库的时数据库的一致性一致性(完整性完整性),事务应具有以下特性:),事务应具有以下特性:l原子性原子性(atomicity)。事务的。事务的所有操作所有操作要么要么全部都被执行,全部都被执行,要么都不被执行。要么都不被执行。l一致性一致性(consistency)。一个单独执行的事务一个单独执行的事务应保证其执行应保证其执行结果的一致性,即总是结果的一致性,即总是将数据库从一个一致性状态转化到将数据库从一个一致性状态转化到另一个一致性状态另一个一致性状态。l隔离性隔离性(isolation)。当。当多个事务并发执行多个事务并发执行时,一个事务的时,一个事务的执行不能影
13、响另一个事务,即执行不能影响另一个事务,即并发执行的各个事务不能互并发执行的各个事务不能互相干扰相干扰。l持久性持久性(durability)。一个。一个事务成功提交事务成功提交后,后,它对数据库的它对数据库的改变必须是永久的改变必须是永久的,即使随后系统出现故障也不会受到影,即使随后系统出现故障也不会受到影响。响。DBMS保证事务特性措施保证事务特性措施n 原子性原子性也称为也称为故障原子性故障原子性或或(故障故障)可靠性可靠性l 由由DBMS通过通过撤销未完成事务对数据库的影响撤销未完成事务对数据库的影响来实现。来实现。n 一致性一致性是指是指单个事务的一致性单个事务的一致性,也称为,也称
14、为并发原子性并发原子性或或正确性正确性l 由编写该事务代码的由编写该事务代码的应用程序员应用程序员负责,但有时也可利用负责,但有时也可利用DBMS提供的提供的数据库完整性约束数据库完整性约束(如触发器如触发器)的自动检查功能来保证的自动检查功能来保证。n 隔离性隔离性也称为也称为执行原子性执行原子性或或可串行化可串行化,可以看作是多个事务,可以看作是多个事务并发执行时的一致性或正确性要求并发执行时的一致性或正确性要求l 由由DBMS的的并发控制模块并发控制模块保证。保证。n 持久性持久性也称为也称为恢复原子性恢复原子性或或恢复可靠性恢复可靠性l 它是利用已记录在它是利用已记录在稳固存储介质稳固
15、存储介质(如如磁盘阵列磁盘阵列)中的恢复信息中的恢复信息(如日志、如日志、备份等备份等)来实现丢失数据来实现丢失数据(如因中断而丢失的存放在主存中但还未保存如因中断而丢失的存放在主存中但还未保存到磁盘数据库中去的数据等到磁盘数据库中去的数据等)的恢复。的恢复。l 它是由它是由DBMS的的恢复管理模块恢复管理模块保证。保证。事务并发执行事务并发执行n 数据库管理系统数据库管理系统允许多个事务并发执行:允许多个事务并发执行:l优点优点增加系统吞吐量增加系统吞吐量(throughput)。吞吐量吞吐量是指是指单位时间系统完成事务单位时间系统完成事务的数量的数量。当一事务需等待磁盘。当一事务需等待磁盘
16、I/O时,时,CPU可去处理其它正在等待可去处理其它正在等待CPU的事务。这样,可减少的事务。这样,可减少CPU和磁盘空闲时间,增加给定时间和磁盘空闲时间,增加给定时间内完成事务的数量。内完成事务的数量。减少平均响应时间减少平均响应时间(average response time)。事务响应时间事务响应时间是指是指事事务从提交给系统到最后完成所需要的时间务从提交给系统到最后完成所需要的时间。事务的执行时间有长。事务的执行时间有长有短,如果按事务到达的顺序依次执行,则短事务就可能会由于有短,如果按事务到达的顺序依次执行,则短事务就可能会由于等待长事务导致完成时间的延长。如果允许并发执行,等待长事
17、务导致完成时间的延长。如果允许并发执行,短事务可短事务可以较早地完成以较早地完成。因此,并发执行可减少事务的平均响应时间。因此,并发执行可减少事务的平均响应时间。l缺点缺点若不对事务的并发执行加以控制,则可能若不对事务的并发执行加以控制,则可能破坏数据库的一致性破坏数据库的一致性。事务并发执行可能出现的问题事务并发执行可能出现的问题n 读脏数据读脏数据。如果事务如果事务T2读取事务读取事务T1修改但未提交修改但未提交的的数据后,事务数据后,事务T1由于某种原因由于某种原因中止而撤销中止而撤销,这时事,这时事务务T2就读取了不一致的数据。数据库中就读取了不一致的数据。数据库中将这种读未将这种读未
18、提交且被撤销的数据为读提交且被撤销的数据为读“脏数据脏数据”。n 丢失更新丢失更新。两个或多个事务都读取了同一数据值并。两个或多个事务都读取了同一数据值并修改,修改,最后提交事务最后提交事务的执行结果覆盖了的执行结果覆盖了前面提交事前面提交事务务的执行结果,从而导致前面事务的更新被丢失的执行结果,从而导致前面事务的更新被丢失。事务并发执行可能出现的问题事务并发执行可能出现的问题n 不可重复读不可重复读。是指事务。是指事务Ti两次从数据库中读取的结果不两次从数据库中读取的结果不同,可分为三种情况:同,可分为三种情况:l事务事务Ti读取一数据后,读取一数据后,事务事务Tj对该数据进行了更改对该数据
19、进行了更改。当事。当事务务Ti再次读该数据时,则再次读该数据时,则会读到与前一次不同的值会读到与前一次不同的值。l事务事务Ti按某条件读取数据库中某些记录后,按某条件读取数据库中某些记录后,事务事务Tj删除了删除了其中部分记录其中部分记录。当事务。当事务Ti再次按相同条件读取时,再次按相同条件读取时,发现记发现记录数变少了录数变少了。(幻影现象(幻影现象1)l事务事务Ti按某条件读取数据库中某些记录后,按某条件读取数据库中某些记录后,事务事务Tj插入了插入了新的记录新的记录。当事务。当事务Ti再次按相同条件读取时,再次按相同条件读取时,发现记录数发现记录数变多了变多了。(幻影现象(幻影现象2)
20、事务并发执行问题举例事务并发执行问题举例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 更新事务更新事务T1和和T2事务并发执行问题举例事务并发执行问题举例n 如果是如果是串行执行串行执行,则不管是,则不管是T1先执行再执行先执行再执行T2(图图10-2(a),还是还是T2先执行再执
展开阅读全文