事务处理技术课件

上传人:M****1 文档编号:592667200 上传时间:2024-09-21 格式:PPT 页数:100 大小:179KB
返回 下载 相关 举报
事务处理技术课件_第1页
第1页 / 共100页
事务处理技术课件_第2页
第2页 / 共100页
事务处理技术课件_第3页
第3页 / 共100页
事务处理技术课件_第4页
第4页 / 共100页
事务处理技术课件_第5页
第5页 / 共100页
点击查看更多>>
资源描述

《事务处理技术课件》由会员分享,可在线阅读,更多相关《事务处理技术课件(100页珍藏版)》请在金锄头文库上搜索。

1、第七章第七章 事务处理技术事务处理技术事务处理技术v 数据库恢复技术数据库恢复技术事务用户定义的一个数据库操作序列,这些操作要么都事务用户定义的一个数据库操作序列,这些操作要么都 做要么都不做,是不可分割的。做要么都不做,是不可分割的。u 事务事务是是DBMSDBMS中的基本执行单位;中的基本执行单位;u 事务是恢复和并发控制的基本单位事务是恢复和并发控制的基本单位事务处理技术如何定义事务如何定义事务l显式定义方式显式定义方式 BEGIN TRANSACTION BEGIN TRANSACTION SQL 语句语句1 SQL 语句语句1 SQL 语句语句2 SQL 语句语句2 COMMIT R

2、OLLBACKl隐式方式隐式方式当用户没有显式地定义事务时,当用户没有显式地定义事务时,DBMS按缺省规定自动划分事务按缺省规定自动划分事务事务处理技术lCOMMIT事务正常结束事务正常结束 提交事务的所有操作(读提交事务的所有操作(读+更新)更新)事务中所有对数据库的更新永久生效事务中所有对数据库的更新永久生效lROLLBACK事务异常终止事务异常终止事务运行的过程中发生了故障,不能继续执行事务运行的过程中发生了故障,不能继续执行回滚事务的所有更新操作回滚事务的所有更新操作事务滚回到开始时的状态事务滚回到开始时的状态事务处理技术 事务的特性事务的特性ACIDACID特性特性A(A(原子性原子

3、性) )不可分割的逻辑工作单位。不可分割的逻辑工作单位。C(C(一致性一致性) )事务要保证数据库从一个一致性状态到另一个事务要保证数据库从一个一致性状态到另一个 一致性状态。一致性状态。I(I(隔离性隔离性) )事务内部的操作对其他事务是隔离的。事务内部的操作对其他事务是隔离的。D(D(持久性持久性) )事务事务COMMITCOMMIT后,对数据库的改变的持久性。后,对数据库的改变的持久性。事务处理技术1. 1. 原子性原子性l事务是数据库的逻辑工作单位事务是数据库的逻辑工作单位事务中包括的诸操作要么都做,要么都不做事务中包括的诸操作要么都做,要么都不做事务处理技术2. 2. 一致性一致性事

4、务执行的结果必须是使数据库从一个一致性状态变到另事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。一个一致性状态。一致性状态一致性状态:数据库中只包含成功事务提交的结果数据库中只包含成功事务提交的结果不一致状态不一致状态:数据库中包含失败事务的结果数据库中包含失败事务的结果事务处理技术一致性与原子性一致性与原子性银行转帐:从帐号银行转帐:从帐号A中取出一万元,存入帐号中取出一万元,存入帐号B。定义一个事务,该事务包括两个操作定义一个事务,该事务包括两个操作这两个操作要么全做,要么全不做这两个操作要么全做,要么全不做l全做或者全不做,数据库都处于一致性状态。全做或者全不做,数据库

5、都处于一致性状态。l如果只做一个操作,数据库就处于不一致性状态如果只做一个操作,数据库就处于不一致性状态。B=B+1A=A-1BA事务处理技术3. 3. 隔离性隔离性对并发执行而言对并发执行而言一个事务的执行不能被其他事务干扰一个事务的执行不能被其他事务干扰l一个事务内部的操作及使用的数据对其他并发事务是隔一个事务内部的操作及使用的数据对其他并发事务是隔离的离的l并发执行的各个事务之间不能互相干扰并发执行的各个事务之间不能互相干扰事务处理技术T1的修改被的修改被T2覆盖了!覆盖了!读A=16AA-3写回A=13读A=16AA-1写回A=15T2T1事务处理技术4. 4. 持续性持续性l持续性也

6、称永久性(持续性也称永久性(PermanencePermanence)一个事务一旦提交,它对数据库中数据的改变就应该一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。是永久性的。接下来的其他操作或故障不应该对其执行结果有任何接下来的其他操作或故障不应该对其执行结果有任何影响。影响。事务处理技术事务的特性事务的特性 l保证事务保证事务ACIDACID特性是事务处理的任务特性是事务处理的任务l破坏事务破坏事务ACIDACID特性的因素特性的因素多个事务并行运行时,不同事务的操作交叉执行多个事务并行运行时,不同事务的操作交叉执行事务在运行过程中被强行停止事务在运行过程中被强行停止事务处理技术

7、在任何情况下,在任何情况下,DBMSDBMS都应保证事务的都应保证事务的ACIDACID性质。正常运行性质。正常运行 时和发生故障时,都应保证事务的时和发生故障时,都应保证事务的ACIDACID性质。性质。不但在单个应用运行时应保证事务的不但在单个应用运行时应保证事务的ACIDACID性质;而且在多性质;而且在多 个应用并行运行时,也应保证事务的个应用并行运行时,也应保证事务的ACIDACID性质。性质。保证事务在故障发生时满足保证事务在故障发生时满足ACIDACID性质的措施称为恢复技术。性质的措施称为恢复技术。保证多个事务在并行执行时满足保证多个事务在并行执行时满足ACIDACID性质的措

8、施称为并发性质的措施称为并发 控制技术。控制技术。恢复和并发控制是保证事务正确运行的两项基本技术,它恢复和并发控制是保证事务正确运行的两项基本技术,它 们被合称为们被合称为事务管理事务管理。事务处理技术 恢复技术概述恢复技术概述l故障是不可避免的故障是不可避免的计算机硬件故障计算机硬件故障系统软件和应用软件的错误系统软件和应用软件的错误操作员的失误操作员的失误恶意的破坏恶意的破坏l故障的影响故障的影响运行事务非正常中断运行事务非正常中断破坏数据库破坏数据库事务处理技术l数据库管理系统对故障的对策数据库管理系统对故障的对策DBMSDBMS提供恢复子系统提供恢复子系统保证故障发生后,能把数据库中的

9、数据从错误状态保证故障发生后,能把数据库中的数据从错误状态恢复到某种逻辑一致的状态恢复到某种逻辑一致的状态保证事务保证事务ACIDACIDl恢复技术恢复技术是衡量系统优劣的重要指标是衡量系统优劣的重要指标事务处理技术 故障的种类故障的种类1 1、事务内部故障、事务内部故障事务内部的故障有的是可以通过事务程序本身发现的事务内部的故障有的是可以通过事务程序本身发现的 (见下面转帐事务的例子),有的是非预期的,不能由(见下面转帐事务的例子),有的是非预期的,不能由 事务程序处理的。事务程序处理的。例如:银行转帐事务,这个事务把一笔金额从一个帐例如:银行转帐事务,这个事务把一笔金额从一个帐 户甲转给另

10、一个帐户乙。户甲转给另一个帐户乙。事务处理技术BEGIN TRANSACTIONBEGIN TRANSACTION 读帐户甲的余额读帐户甲的余额BALANCEBALANCE; BALANCE = BALANCE-AMOUNT BALANCE = BALANCE-AMOUNT;AMOUNT AMOUNT 为转帐金额)为转帐金额) IF IF(BALANCEBALANCE0 0 ) THEN THEN 打印打印金额不足,不能转帐金额不足,不能转帐; ROLLBACK ROLLBACK;(撤消刚才的修改,恢复事务);(撤消刚才的修改,恢复事务) ELSE ELSE 读帐户乙的余额读帐户乙的余额BAL

11、ANCE1BALANCE1; BALANCE1 = BALANCE1+AMOUNT BALANCE1 = BALANCE1+AMOUNT; 写回写回BALANCE1BALANCE1; COMMIT COMMIT; 事务处理技术上面这个例子所包括的两个更新操作要么全部完成要么上面这个例子所包括的两个更新操作要么全部完成要么 全部不做。否则就会使数据库处于不一致状态,例如只全部不做。否则就会使数据库处于不一致状态,例如只 把帐户甲的余额减少了而没有把帐户乙的余额增加。把帐户甲的余额减少了而没有把帐户乙的余额增加。 在这段程序中若产生帐户甲余额不足的情况,应用程序在这段程序中若产生帐户甲余额不足的情

12、况,应用程序 可以发现并让事务滚回,撤消已作的修改,恢复数据库可以发现并让事务滚回,撤消已作的修改,恢复数据库 到正确状态。到正确状态。 事务内部更多的故障是非预期的,是不能由应用程序处事务内部更多的故障是非预期的,是不能由应用程序处 理的。如运算溢出、并发事务发生死锁而被选中撤消该理的。如运算溢出、并发事务发生死锁而被选中撤消该 事务、违反了某些完整性限制等。以后,事务故障仅指事务、违反了某些完整性限制等。以后,事务故障仅指 这类非预期的故障。这类非预期的故障。事务处理技术l事务故障的常见原因事务故障的常见原因输入数据有误输入数据有误运算溢出运算溢出违反了某些完整性限制违反了某些完整性限制某

13、些应用程序出错某些应用程序出错并行事务发生死锁并行事务发生死锁事务处理技术l发生事务故障时,夭折的事务可能已把对数据库的部发生事务故障时,夭折的事务可能已把对数据库的部分修改写回磁盘分修改写回磁盘l事务故障的恢复:事务故障的恢复:撤消事务(撤消事务(UNDOUNDO)l强行回滚(强行回滚(ROLLBACKROLLBACK)该事务)该事务l清除该事务对数据库的所有修改,使得这个事务象根清除该事务对数据库的所有修改,使得这个事务象根本没有启动过一样本没有启动过一样事务处理技术2.2.系统故障系统故障l什么是系统故障什么是系统故障整个系统的正常运行突然被破坏整个系统的正常运行突然被破坏所有正在运行的

14、事务都非正常终止所有正在运行的事务都非正常终止内存中数据库缓冲区的信息全部丢失内存中数据库缓冲区的信息全部丢失外部存储设备上的数据未受影响外部存储设备上的数据未受影响事务处理技术系统故障的常见原因系统故障的常见原因l操作系统或操作系统或DBMSDBMS代码错误代码错误l操作员操作失误操作员操作失误l特定类型的硬件错误(如特定类型的硬件错误(如CPUCPU故障)故障)l突然停电突然停电事务处理技术系统故障的恢复系统故障的恢复l清除尚未完成的事务对数据库的所有修改清除尚未完成的事务对数据库的所有修改系统重新启动时,恢复程序要强行撤消(系统重新启动时,恢复程序要强行撤消(UNDOUNDO)所有)所有

15、未完成事务未完成事务l将缓冲区中已完成事务提交的结果写入数据库将缓冲区中已完成事务提交的结果写入数据库系统重新启动时,恢复程序需要重做(系统重新启动时,恢复程序需要重做(REDOREDO)所有已)所有已提交的事务提交的事务事务处理技术发生系统故障时,一些尚未完成的事务的结果可能已送发生系统故障时,一些尚未完成的事务的结果可能已送 入物理数据库,有些已完成的事务可能有一部分甚至全入物理数据库,有些已完成的事务可能有一部分甚至全 部留在缓冲区,尚未写回到磁盘上的物理数据库中,从部留在缓冲区,尚未写回到磁盘上的物理数据库中,从 而造成数据库可能处于不正确的状态。而造成数据库可能处于不正确的状态。为保

16、证数据一致性,恢复子系统必须在系统重新启动时为保证数据一致性,恢复子系统必须在系统重新启动时 让所有非正常终止的事务回滚,强行撤消让所有非正常终止的事务回滚,强行撤消(UNDO)(UNDO)所有未所有未 完成事务。重做完成事务。重做(Redo)(Redo)所有已提交的事务,以将数据库所有已提交的事务,以将数据库 真正恢复到一致状态。真正恢复到一致状态。事务处理技术3 3、介质故障、介质故障系统故障常称为软故障(系统故障常称为软故障(Soft CrashSoft Crash),),介质故障称介质故障称 为硬故障(为硬故障(Hard CrashHard Crash)。)。硬故障指外存故障,如磁盘损

17、坏、磁头碰撞,瞬时强硬故障指外存故障,如磁盘损坏、磁头碰撞,瞬时强 磁场干扰等。这类故障将破坏数据库或部分数据库,磁场干扰等。这类故障将破坏数据库或部分数据库, 并影响正在存取这部分数据的所有事务。并影响正在存取这部分数据的所有事务。这类故障比前两类故障发生的可能性小得多,但破坏这类故障比前两类故障发生的可能性小得多,但破坏 性最大。性最大。事务处理技术4 4、计算机病毒、计算机病毒计算机病毒是具有破坏性、可以自我复制的计算机程计算机病毒是具有破坏性、可以自我复制的计算机程 序。计算机病毒已成为计算机系统的主要威胁,自然序。计算机病毒已成为计算机系统的主要威胁,自然 也是数据库系统的主要威胁。

18、因此数据库一旦被破坏也是数据库系统的主要威胁。因此数据库一旦被破坏 仍要用恢复技术把数据库加以恢复。仍要用恢复技术把数据库加以恢复。 总结各类故障,对数据库的影响有两种可能性。一是总结各类故障,对数据库的影响有两种可能性。一是 数据库本身被破坏。二是数据库没有破坏,但数据可数据库本身被破坏。二是数据库没有破坏,但数据可 能不正确,这是因为事务的运行被非正常终止造成的。能不正确,这是因为事务的运行被非正常终止造成的。事务处理技术 恢复的实现技术恢复的实现技术1 1、概述、概述恢复机制涉及的两个关键问题是:恢复机制涉及的两个关键问题是:第一,如何建立冗余数据;第一,如何建立冗余数据;第二,如何利用

19、这些冗余数据实施数据库恢复。第二,如何利用这些冗余数据实施数据库恢复。 建立冗余数据最常用的技术是数据备份和登记日志文建立冗余数据最常用的技术是数据备份和登记日志文 件。通常在一个数据库系统中,这两种方法是一起使件。通常在一个数据库系统中,这两种方法是一起使 用的。用的。事务处理技术恢复技术大致有下列三种:恢复技术大致有下列三种:1. 1. 单纯以后备复本为基础的恢复技术;单纯以后备复本为基础的恢复技术; 1 1)周期性的数据库转储;)周期性的数据库转储; 2 2)增量转储。)增量转储。 优点:实现简单,不增加数据库正常运行时的开销。优点:实现简单,不增加数据库正常运行时的开销。 缺点:不能恢

20、复到数据库的最近一致状态。(只能用缺点:不能恢复到数据库的最近一致状态。(只能用 在小型和不重要的数据库系统)在小型和不重要的数据库系统)事务处理技术2. 2. 以后备复本和运行记录(以后备复本和运行记录(Log Log 或或Journal)Journal)为基础的为基础的 恢复技术;恢复技术; 下面将详细介绍这种技术。下面将详细介绍这种技术。 优点:数据库恢复到最近的一致状态。优点:数据库恢复到最近的一致状态。 缺点:实现复杂,运行时需保留运行记录。缺点:实现复杂,运行时需保留运行记录。 - -大部分商品化大部分商品化DBMSDBMS支持这种恢复技术,这是主支持这种恢复技术,这是主 要的恢复

21、方法。要的恢复方法。事务处理技术3. 3. 基于多复本的恢复技术基于多复本的恢复技术 镜像磁盘系统镜像磁盘系统 优点:多复本互为备份,具有独立的失效模式。优点:多复本互为备份,具有独立的失效模式。 缺点:增加费用。缺点:增加费用。事务处理技术2 2、数据库备份、数据库备份所谓备份即所谓备份即DBADBA定期地将整个数据库复制到磁带或另一定期地将整个数据库复制到磁带或另一 个磁盘上保存起来的过程。这些备用的数据文本称为后个磁盘上保存起来的过程。这些备用的数据文本称为后 备副本或后援副本。备副本或后援副本。当数据库遭到破坏后可以将后备副本重新装入,但重装当数据库遭到破坏后可以将后备副本重新装入,但

22、重装 后备副本只能将数据库恢复到备份时的状态,要想恢复后备副本只能将数据库恢复到备份时的状态,要想恢复 到故障发生时的状态,必须重新运行自备份以后的所有到故障发生时的状态,必须重新运行自备份以后的所有 更新事务。更新事务。事务处理技术例、在下图中,系统在例、在下图中,系统在TaTa时刻停止运行事务进行数据库备时刻停止运行事务进行数据库备份,在份,在TbTb时刻备份完毕,得到时刻备份完毕,得到TbTb时刻的数据库一致性副本时刻的数据库一致性副本事务处理技术系统运行到系统运行到TfTf时刻发生故障。为恢复数据库,首先由时刻发生故障。为恢复数据库,首先由DBADBA 重装数据库后备副本,将数据库恢复

23、至重装数据库后备副本,将数据库恢复至TbTb时刻的状态,然时刻的状态,然 后重新运行自后重新运行自TbTb时刻至时刻至TfTf时刻的所有更新事务,这样就把时刻的所有更新事务,这样就把 数据库恢复到故障发生前的一致状态。数据库恢复到故障发生前的一致状态。事务处理技术备份是十分耗费时间和资源的,不能频繁进行。备份是十分耗费时间和资源的,不能频繁进行。DBADBA应该应该 根据数据库的使用情况确定一个适当的备份周期。根据数据库的使用情况确定一个适当的备份周期。备份可分为脱机备份和联机备份两种方式。备份可分为脱机备份和联机备份两种方式。脱机备份是在备份过程中数据库系统处于脱机状态,即在脱机备份是在备份

24、过程中数据库系统处于脱机状态,即在 备份过程中数据库系统不再接受应用程序的访问,因此,备份过程中数据库系统不再接受应用程序的访问,因此, 脱机备份又称为静态备份。脱机备份又称为静态备份。联机备份是在备份过程中数据库系统处于联机状态,即在联机备份是在备份过程中数据库系统处于联机状态,即在 进行备份的同时数据库系统还可接受应用程序的访问。因进行备份的同时数据库系统还可接受应用程序的访问。因 此,联机备份又称为动态备份。此,联机备份又称为动态备份。事务处理技术备份还可以分为海量备份和增量备份两种方式。备份还可以分为海量备份和增量备份两种方式。海量备份是指每次备份全部数据库。海量备份是指每次备份全部数

25、据库。增量备份则指每次只备份上一次备份后更新过的数据。增量备份则指每次只备份上一次备份后更新过的数据。从恢复角度看,使用海量备份得到的后备副本进行恢复一从恢复角度看,使用海量备份得到的后备副本进行恢复一 般说来会更方便些。但如果数据库很大,事务处理又十分般说来会更方便些。但如果数据库很大,事务处理又十分 频繁,则增量备份方式更实用更有效。频繁,则增量备份方式更实用更有效。事务处理技术3 3、数据库日志、数据库日志1)1)日志文件的格式和内容日志文件的格式和内容2)2)日志文件是用来记录事务对数据库的更新操作的文件。日志文件是用来记录事务对数据库的更新操作的文件。3)3)不同数据库系统采用的日志

26、文件格式并不完全一样。不同数据库系统采用的日志文件格式并不完全一样。 概括起来日志文件主要有两种格式:概括起来日志文件主要有两种格式:以记录为单位的日志文件和以记录为单位的日志文件和以数据块为单位的日志文件以数据块为单位的日志文件事务处理技术对于以记录为单位的日志文件,日志文件中需要登记的对于以记录为单位的日志文件,日志文件中需要登记的 内容包括:内容包括: 各个事务的开始各个事务的开始(BEGIN TRANSACTION)(BEGIN TRANSACTION)标记标记 各个事务的结束各个事务的结束(COMMIT(COMMIT或或ROLL BACK)ROLL BACK)标记标记 各个事务的所有

27、更新操作各个事务的所有更新操作 这里每个事务开始的标记、每个事务的结束标记和每个更这里每个事务开始的标记、每个事务的结束标记和每个更 新操作均作为日志文件中的一个日志记录新操作均作为日志文件中的一个日志记录(log record)(log record)。 事务处理技术每个日志记录的内容主要包括:每个日志记录的内容主要包括: 事务标识事务标识TID(TID(标明是那个事务标明是那个事务) ) 操作的类型操作的类型( (插入、删除或修改插入、删除或修改) )操作对象操作对象( (记录内部标识记录内部标识) ) 更新前数据的旧值更新前数据的旧值( (对插入操作而言,此项为空值对插入操作而言,此项为

28、空值) ) 更新后数据的新值更新后数据的新值( (对删除操作而言对删除操作而言, , 此项为空值此项为空值) )事务处理技术2)2)日志文件的作用日志文件的作用3)3)日志文件在数据库恢复中起着非常重要的作用。可以日志文件在数据库恢复中起着非常重要的作用。可以 用来进行事务故障恢复和系统故障恢复,并协助后备用来进行事务故障恢复和系统故障恢复,并协助后备 副本进行介质故障恢复。副本进行介质故障恢复。具体地讲:事务故障恢复和系统故障必须用日志文件。具体地讲:事务故障恢复和系统故障必须用日志文件。 在动态备份方式中必须建立日志文件,后援副本和日在动态备份方式中必须建立日志文件,后援副本和日 志文件综

29、合起来才能有效地恢复数据库。志文件综合起来才能有效地恢复数据库。事务处理技术在静态备份方式中,也可以建立日志文件。在静态备份方式中,也可以建立日志文件。当数据库毁坏后可重新装入后援副本把数据库恢复到备份当数据库毁坏后可重新装入后援副本把数据库恢复到备份 结束时刻的正确状态,然后利用日志文件,把已完成的事结束时刻的正确状态,然后利用日志文件,把已完成的事 务进行重做处理,对故障发生时尚未完成的事务进行撤消务进行重做处理,对故障发生时尚未完成的事务进行撤消 处理。处理。这样不必重新运行那些已完成的事务程序就可把数据库恢这样不必重新运行那些已完成的事务程序就可把数据库恢 复到故障前某一时刻的正确状态

30、。复到故障前某一时刻的正确状态。事务处理技术事务处理技术3)3)登记日志文件(登记日志文件(logginglogging)4)4)为保证数据库是可恢复的,登记日志文件时必须遵循为保证数据库是可恢复的,登记日志文件时必须遵循 两条原则:两条原则:1. 1. 登记的次序严格按并发事务执行的时间次序。登记的次序严格按并发事务执行的时间次序。 2. 2. 必须先写日志文件,后写数据库。必须先写日志文件,后写数据库。事务处理技术 把对数据的修改写到数据库中和把写表示这个修改的日志把对数据的修改写到数据库中和把写表示这个修改的日志 记录写到日志文件中是两个不同的操作。有可能在这两个记录写到日志文件中是两个

31、不同的操作。有可能在这两个 操作之间发生故障,即这两个写操作只完成了一个。如果操作之间发生故障,即这两个写操作只完成了一个。如果 先写了数据库修改,而在运行记录中没有登记下这个修改先写了数据库修改,而在运行记录中没有登记下这个修改 ,则以后就无法恢复这个修改了。,则以后就无法恢复这个修改了。事务处理技术l 如果先写日志,但没有修改数据库,按日志文件恢复时如果先写日志,但没有修改数据库,按日志文件恢复时只只 不过是多执行一次不必要的不过是多执行一次不必要的UNDO操作,并不会影响数操作,并不会影响数据库据库 的正确性。所以为了安全,一定要先写日志文件,即的正确性。所以为了安全,一定要先写日志文件

32、,即首先首先 把日志记录写到日志文件中,然后写数据库的修改。把日志记录写到日志文件中,然后写数据库的修改。这就这就 是所谓的是所谓的“提前写日志提前写日志”原则。原则。事务处理技术1.1.事务故障的恢复事务故障的恢复2.2.事务故障是指事务在运行至正常终止点前被中止,这时事务故障是指事务在运行至正常终止点前被中止,这时 恢复子系统应利用日志文件撤消(恢复子系统应利用日志文件撤消(UNDOUNDO)此事务已对数此事务已对数 据库进行的修改。据库进行的修改。事务处理技术事务故障的恢复是由系统自动完成的,对用户是透明的。事务故障的恢复是由系统自动完成的,对用户是透明的。 系统的恢复步骤是:系统的恢复

33、步骤是: 1)1)反向扫描文件日志反向扫描文件日志( (即从最后向前扫描日志文件即从最后向前扫描日志文件) ),查找,查找 该事务的更新操作。该事务的更新操作。 2)2)对该事务的更新操作执行逆操作。即将日志记录中对该事务的更新操作执行逆操作。即将日志记录中“更新更新 前的值前的值”写入数据库。这样,如果记录中是插入操作,则写入数据库。这样,如果记录中是插入操作,则 相当于做删除操作相当于做删除操作( (因此时因此时“更新前的值更新前的值”为空为空) )。若记录。若记录 中是删除操作,则做插入操作,若是修改操作,则相当中是删除操作,则做插入操作,若是修改操作,则相当 于用修改前值代替修改后值。

34、于用修改前值代替修改后值。事务处理技术 3) 3)继续反向扫描日志文件,查找该事务的其他更新操作,继续反向扫描日志文件,查找该事务的其他更新操作, 并做同样处理。并做同样处理。 4) 4)如此处理下去,直至读到此事务的开始标记,事务故障如此处理下去,直至读到此事务的开始标记,事务故障 恢复就完成了。恢复就完成了。事务处理技术2.2.系统故障的恢复系统故障的恢复3.3.前面已讲过,系统故障造成数据库不一致状态的原因有前面已讲过,系统故障造成数据库不一致状态的原因有 两个,一是未完成事务对数据库的更新可能已写入数据两个,一是未完成事务对数据库的更新可能已写入数据 库,二是已提交事务对数据库的更新可

35、能还留在缓冲区库,二是已提交事务对数据库的更新可能还留在缓冲区 没来得及写入数据库。因此恢复操作就是要撤消故障发没来得及写入数据库。因此恢复操作就是要撤消故障发 生时未完成的事务,重做已完成的事务。生时未完成的事务,重做已完成的事务。 系统故障的恢复是由系统在重新启动时自动完成的,不系统故障的恢复是由系统在重新启动时自动完成的,不 需要用户干预。需要用户干预。 事务处理技术系统的恢复步骤是:系统的恢复步骤是: 1)1)正向扫描日志文件正向扫描日志文件( (即从头扫描日志文件即从头扫描日志文件) ),找出在故障,找出在故障 发生前已经提交事务发生前已经提交事务( (既有既有BEGIN TRANS

36、ACTIONBEGIN TRANSACTION记录,也记录,也 有有COMMITCOMMIT记录),将其事务标识记入记录),将其事务标识记入重做重做(REDO)(REDO)队列队列。 同时找出故障发生时尚未完成的事务同时找出故障发生时尚未完成的事务( (只有只有BEGIN TRANBEGIN TRAN 记录,无相应的记录,无相应的COMMITCOMMIT记录记录) ),将其事务标识记入,将其事务标识记入撤消撤消 (UNDO)(UNDO)队列队列。 2)2)对撤消队列中的各个事务进行撤消对撤消队列中的各个事务进行撤消(UNDO)(UNDO)处理。处理。 3)3)对重做队列中的各个事务进行重做对重

37、做队列中的各个事务进行重做(REDO)(REDO)处理。处理。事务处理技术注:进行注:进行UNDOUNDO处理的方法是,反向扫描日志文件,对每个处理的方法是,反向扫描日志文件,对每个 UNDOUNDO事务的更新操作执行逆操作,即将日志记录中事务的更新操作执行逆操作,即将日志记录中“更新更新 前的值前的值”写入数据库。写入数据库。注:进行注:进行REDOREDO处理的方法是:正向扫描日志文件,对每个处理的方法是:正向扫描日志文件,对每个 REDOREDO事务重新执行日志文件登记的操作。即将日志记录中事务重新执行日志文件登记的操作。即将日志记录中 “ “更新后的值更新后的值”写入数据库。写入数据库

38、。事务处理技术3.3.介质故障的恢复介质故障的恢复4.4.发生介质故障后,磁盘上的物理数据和日志文件被破发生介质故障后,磁盘上的物理数据和日志文件被破 坏,这是最严重的一种故障,恢复方法是重装数据库,坏,这是最严重的一种故障,恢复方法是重装数据库, 然后重做已完成的事务。然后重做已完成的事务。具体步骤是:具体步骤是: 1)1)装入最新的数据库后备副本(离故障发生时刻最近装入最新的数据库后备副本(离故障发生时刻最近 的备份副本),使数据库恢复到最近一次备份时的的备份副本),使数据库恢复到最近一次备份时的 一致性状态。一致性状态。事务处理技术 2) 2)装入相应的日志文件副本(备份结束时刻的日志文

39、件装入相应的日志文件副本(备份结束时刻的日志文件 副本),重做已完成的事务。即:副本),重做已完成的事务。即:首先扫描日志文件,找出故障发生时已提交的事务的首先扫描日志文件,找出故障发生时已提交的事务的 标识,将其记入重做标识,将其记入重做(REDO)(REDO)队列。队列。然后正向扫描日志文件,对重做队列中的所有事务进然后正向扫描日志文件,对重做队列中的所有事务进 行重做处理。即将日志记录中行重做处理。即将日志记录中“更新后的值更新后的值”写入数据写入数据 库。库。这样就可以将数据库恢复至故障前某一时刻的一致状这样就可以将数据库恢复至故障前某一时刻的一致状 态了。态了。 事务处理技术介质故障

40、的恢复需要介质故障的恢复需要DBADBA的介入。但的介入。但DBADBA只需要重装最近只需要重装最近 备份的数据库副本和有关的各日志文件副本,然后执行备份的数据库副本和有关的各日志文件副本,然后执行 系统提供的恢复命令即可,具体的恢复操作仍由系统提供的恢复命令即可,具体的恢复操作仍由DBMSDBMS完完 成。成。事务处理技术l利用日志恢复技术的问题:利用日志恢复技术的问题:搜索整个日志要耗费大量的时间搜索整个日志要耗费大量的时间很多需要很多需要REDOREDO处理的事务实际上已经将它们的更新写处理的事务实际上已经将它们的更新写入数据库了入数据库了 具有检查点的恢复技术具有检查点的恢复技术事务处

41、理技术l具有检查点(具有检查点(checkpointcheckpoint)的恢复技术)的恢复技术在日志文件中增加检查点记录(在日志文件中增加检查点记录(checkpointcheckpoint)增加重新开始文件增加重新开始文件恢复子系统在登录日志文件期间动态地维护日志恢复子系统在登录日志文件期间动态地维护日志事务处理技术l检查点记录的内容检查点记录的内容1. 1. 建立检查点时刻所有正在执行的事务清单建立检查点时刻所有正在执行的事务清单2. 2. 这些事务最近一个日志记录的地址这些事务最近一个日志记录的地址l重新开始文件的内容重新开始文件的内容记录各个检查点记录在日志文件中的地址记录各个检查点

42、记录在日志文件中的地址事务处理技术事务处理技术动态维护日志文件的方法动态维护日志文件的方法l1.1.将当前日志缓冲区中的所有日志记录写入磁盘的日将当前日志缓冲区中的所有日志记录写入磁盘的日志文件上。志文件上。l2.2.在日志文件中写入一个检查点记录。在日志文件中写入一个检查点记录。l3.3.将当前数据缓冲区的所有数据记录写入磁盘的数据将当前数据缓冲区的所有数据记录写入磁盘的数据库中。库中。l4.4.把检查点记录在日志文件中的地址写入一个重新开把检查点记录在日志文件中的地址写入一个重新开始文件。始文件。事务处理技术建立检查点建立检查点l定期定期按照预定的一个时间间隔按照预定的一个时间间隔l不定期

43、不定期按照某种规则,如日志文件已写满一半建立一个检按照某种规则,如日志文件已写满一半建立一个检查点查点事务处理技术利用检查点的恢复策略利用检查点的恢复策略l当事务当事务T T在一个检查点之前提交在一个检查点之前提交 T T对数据库所做的修改已写入数据库对数据库所做的修改已写入数据库l在进行恢复处理时,没有必要对事务在进行恢复处理时,没有必要对事务T T执行执行REDOREDO操作操作事务处理技术Tc (检查点检查点)Tf(系统故障系统故障) REDOUNDOUNDO REDOT2T3T4T5不要不要REDOT1事务处理技术利用检查点的恢复步骤利用检查点的恢复步骤l1.1.从重新开始文件中找到最

44、后一个检查点记录在日志从重新开始文件中找到最后一个检查点记录在日志文件中的地址,由该地址在日志文件中找到最后一个文件中的地址,由该地址在日志文件中找到最后一个检查点记录检查点记录事务处理技术l2.2.由该检查点记录得到检查点建立时刻所有正在执行的由该检查点记录得到检查点建立时刻所有正在执行的事务清单事务清单ACTIVE-LISTACTIVE-LISTl建立两个事务队列建立两个事务队列UNDO-LIST UNDO-LIST REDO-LIST REDO-LIST l把把ACTIVE-LISTACTIVE-LIST暂时放入暂时放入UNDO-LISTUNDO-LIST队列,队列,REDOREDO队列

45、队列暂为空。暂为空。事务处理技术l3.3.从检查点开始正向扫描日志文件,直到日志文件结束从检查点开始正向扫描日志文件,直到日志文件结束如有新开始的事务如有新开始的事务TiTi,把,把TiTi暂时放入暂时放入UNDO-LISTUNDO-LIST队列队列如有提交的事务如有提交的事务TjTj,把,把TjTj从从UNDO-LISTUNDO-LIST队列移到队列移到REDO-REDO-LISTLIST队列队列l4.4.对对UNDO-LISTUNDO-LIST中的每个事务执行中的每个事务执行UNDOUNDO操作操作, , 对对REDO-REDO-LISTLIST中的每个事务执行中的每个事务执行REDORE

46、DO操作操作事务处理技术v 并发控制技术并发控制技术1.1.引言引言2.2.数据库是一种共享资源,可以供多个用户使用。允许多数据库是一种共享资源,可以供多个用户使用。允许多 个用户同时使用的数据库系统称为多用户数据库系统。个用户同时使用的数据库系统称为多用户数据库系统。 当多个用户并发地存取数据库时就会产生多个事务同时当多个用户并发地存取数据库时就会产生多个事务同时 存取同一数据的情况。存取同一数据的情况。事务处理技术若对并发操作不加控制就可能会存取和存储不正确的数若对并发操作不加控制就可能会存取和存储不正确的数 据,破坏数据库的一致性。据,破坏数据库的一致性。所以数据库管理系统必须提供所以数

47、据库管理系统必须提供并发控制机制并发控制机制。并发控制机制是衡量一个数据库管理系统性能的重要标并发控制机制是衡量一个数据库管理系统性能的重要标 志之一。志之一。事务处理技术例例1 1:丢失修改:丢失修改 T1 T2 T1 T2 写写- -写冲突写冲突 1 1) 读读A=16 A=16 (机票预订典型例子)(机票预订典型例子) 2) 2) 读读A=16 A=16 3) A 3) AA-1A-1 写回写回A=15A=15 4) A 4) AA-1A-1 写回写回A=15A=15事务处理技术例例2 2:不可重复读:不可重复读 T1 T2 T1 T21) 1) 读读A=50 A=50 读读写冲突写冲突

48、 读读B=100 B=100 求和求和=150=1502 2) 读读B=100B=100 B BB*2B*2 写回写回B B3) 3) 读读A=50A=50 读读B=200 B=200 求和求和=250=250 ( (验算不对)验算不对) 事务处理技术例例3 3:读:读脏脏数据数据 T1 T2 T1 T21) 1) 读读C=100 C=100 读读写冲突写冲突 C CC*2C*2 写回写回C C2) 2) 读读C=200C=2003) Rollback3) Rollback C C恢复为恢复为100100事务处理技术2.2.数据库系统中的并发数据库系统中的并发3.3. 从上面例子看,数据库管理

49、系统必须提供从上面例子看,数据库管理系统必须提供并发控制机制并发控制机制。4.4.如果数据库中的事务顺序执行,即一个事务完全结束后,如果数据库中的事务顺序执行,即一个事务完全结束后, 另一个事务才开始,则称这种执行方式为串行访问另一个事务才开始,则称这种执行方式为串行访问。如果如果DBMSDBMS可以同时接受多个事务,事务在时间上重叠执可以同时接受多个事务,事务在时间上重叠执 行,则称这种执行方式为并发访问行,则称这种执行方式为并发访问。事务处理技术3.3.事务并发执行可能引起的问题事务并发执行可能引起的问题1)1)丢失修改(丢失修改(lost updatelost update)2)2)两个

50、事务两个事务T1T1和和T2T2读入同一数据并修改,读入同一数据并修改,T2T2提交的结果提交的结果 破坏了破坏了T1T1提交的结果,导致提交的结果,导致T1T1的修改被丢失。的修改被丢失。2)2)不可重复读(不可重复读(non-repeatable readnon-repeatable read)3)3)不可重复读是指事务不可重复读是指事务T1T1读取数据后,事务读取数据后,事务T2T2执行更新执行更新 操作,使操作,使T1T1无法再现前一次读取结果。无法再现前一次读取结果。事务处理技术3)3)读读“脏脏”数据(数据(dirty readdirty read)读读“脏脏”数据是指事务数据是指

51、事务T1T1修改某一数据,并将其写回磁修改某一数据,并将其写回磁 盘,事务盘,事务T2T2读取同一数据后,读取同一数据后,T1T1由于某种原因被撤消,由于某种原因被撤消, 这时这时T1T1已修改过的数据恢复原值,已修改过的数据恢复原值,T2T2读到的数据就与读到的数据就与数据库中的数据不一致,则数据库中的数据不一致,则T2T2读到的数据就为读到的数据就为“脏脏”数数 据据, ,即不正确的数据。即不正确的数据。 事务处理技术4.并发控制的目标并发控制的目标5.产生上述三类数据不一致性的主要原因是并发操作破产生上述三类数据不一致性的主要原因是并发操作破 坏了事务的坏了事务的隔离性隔离性。并发控制就

52、是要用正确的方式调度并发操作,使一个并发控制就是要用正确的方式调度并发操作,使一个 用户事务的执行不受其它事务的干扰,从而避免造成用户事务的执行不受其它事务的干扰,从而避免造成 数据的不一致性。数据的不一致性。此外,并发控制还应能提高系统资源利用率并改善短此外,并发控制还应能提高系统资源利用率并改善短 事务的响应时间。事务的响应时间。事务处理技术 封锁封锁1 1、引言、引言 所谓加锁就是事务所谓加锁就是事务T T在对某个数据对象例如表、记录等在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。加锁后事务操作之前,先向系统发出请求,对其加锁。加锁后事务T T就对该数据对象有了一定

53、的控制,在事务就对该数据对象有了一定的控制,在事务T T释放它的锁之释放它的锁之前,其它的事务不能更新此数据对象。前,其它的事务不能更新此数据对象。 基本的加锁类型有基本的加锁类型有2 2种种: : 排它锁排它锁(Exclusive locks (Exclusive locks 简记简记为为X X锁锁) )和共享锁和共享锁(Share locks (Share locks 简记为简记为S S锁锁) )事务处理技术2 2、排它锁、排它锁(X(X锁锁) )排它锁排它锁(X(X锁锁) )又称为写锁。若事务又称为写锁。若事务T T对数据对象对数据对象A A加上加上X X 锁,则只允许锁,则只允许T T

54、读取和修改读取和修改A A,其它任何事务都不能再其它任何事务都不能再 对对A A加任何类型的锁,直到加任何类型的锁,直到T T释放释放A A上的锁。上的锁。3 3、共享锁、共享锁(S(S锁锁) )共享锁共享锁(S(S锁锁) )又称为读锁。若事务又称为读锁。若事务T T对数据对象对数据对象A A加上加上S S 锁,则事务可以锁,则事务可以T T读读A A但不能修改但不能修改A A,其它事务只能再其它事务只能再 对对A A加加S S锁,而不能加锁,而不能加X X锁,直到锁,直到T T释放释放A A上的上的S S锁。锁。事务处理技术4 4、加锁协议、加锁协议在运用在运用X X锁、锁、S S锁对数据对

55、象加锁时,还需要约定一些规锁对数据对象加锁时,还需要约定一些规 则,例如应何时申请则,例如应何时申请X X锁或锁或S S锁、持锁时间、何时释放等。锁、持锁时间、何时释放等。这些规则被称为这些规则被称为加锁协议加锁协议(Locking ProtocolLocking Protocol)。)。对加对加 锁方式规定不同的规则,就形成了各种不同的加锁协议。锁方式规定不同的规则,就形成了各种不同的加锁协议。应注意,不同级别的加锁协议达到的系统一致性级别是应注意,不同级别的加锁协议达到的系统一致性级别是 不同的。不同的。事务处理技术1) 11) 1级加锁协议级加锁协议 A A、1 1级加锁协议是:事务级加

56、锁协议是:事务T T在修改数据在修改数据R R之前必须先对其加之前必须先对其加X X锁,直到事务结束锁,直到事务结束(EOT)(EOT)才释放。才释放。B B、1 1级加锁协议可防止丢失修改,并保证事务是可恢复的。级加锁协议可防止丢失修改,并保证事务是可恢复的。 C C、在、在1 1级加锁协议中,如果仅仅是读数据而不对其进行修级加锁协议中,如果仅仅是读数据而不对其进行修改,则不需要加锁,所以它不能保证可重复读及不读改,则不需要加锁,所以它不能保证可重复读及不读“脏脏”数据。数据。事务处理技术2)2)2 2级加锁协议级加锁协议 A A、2 2级加锁协议是:级加锁协议是:1 1级加锁协议加上事务级

57、加锁协议加上事务T T在读取数据在读取数据A A之之前必须先对其加前必须先对其加S S锁,读完后即可释放锁,读完后即可释放S S锁。锁。B B、2 2级加锁协议除了可以防止了丢失修改,还可进一步防级加锁协议除了可以防止了丢失修改,还可进一步防止读止读“脏脏”数据。数据。事务处理技术3)3)3 3级加锁协议级加锁协议 A A、3 3级加锁协议是:级加锁协议是:1 1级加锁协议加上事务级加锁协议加上事务T T在读取数据在读取数据A A之之前必须先对其加前必须先对其加S S锁,直到事务结束才释放。锁,直到事务结束才释放。 B B、3 3级加锁协议除防止了丢失修改和不读级加锁协议除防止了丢失修改和不读

58、脏脏数据外,还进数据外,还进一步防止了不可重复读。一步防止了不可重复读。事务处理技术事务处理技术 活锁和死锁活锁和死锁1 1、活锁、活锁 如果事务如果事务T1T1封锁了数据封锁了数据R R,事务事务T2T2又请求封锁又请求封锁R R,于是于是T2T2 等待。等待。T3T3也请求封锁也请求封锁R R,当,当T1T1释放了释放了R R上的封锁之后系统上的封锁之后系统 首先批准了首先批准了T3T3的请求,的请求,T2T2仍然等待。然后仍然等待。然后T4T4又请求封锁又请求封锁 R R,当,当T3T3释放了释放了R R上的封锁之后系统又批准了上的封锁之后系统又批准了T4T4的请求,的请求, .,T2T

59、2有可能永远等待,这就是活锁。有可能永远等待,这就是活锁。 避免活锁的简单方法是采用避免活锁的简单方法是采用“先来先服务先来先服务”的策略。的策略。事务处理技术2 2、什么是死锁?、什么是死锁?和操作系统一样,基于封锁的并发控制方法可能引起和操作系统一样,基于封锁的并发控制方法可能引起 死锁。死锁。一个事务如果申请锁而没有获准,则其必须等待其他一个事务如果申请锁而没有获准,则其必须等待其他 事务释放锁。这就形成事务间的等待关系。事务释放锁。这就形成事务间的等待关系。当事务中出现循环等待时,如果不加干涉,则会一直当事务中出现循环等待时,如果不加干涉,则会一直 等待下去,这就是死锁等待下去,这就是

60、死锁(dead lock)(dead lock)对于死锁有两种方法:一是防止死锁的出现;二是由对于死锁有两种方法:一是防止死锁的出现;二是由 系统检测死锁,一旦发现则对其处理。系统检测死锁,一旦发现则对其处理。事务处理技术 T1 T2 T1 T2 1 1) Lock R1 Lock R12) Lock R2 2) Lock R2 3) 3) 申请申请Lock R2Lock R24) 4) 申请申请Lock R1Lock R15) 5) 等待等待 等待等待6 6) . . . . 死锁死锁事务处理技术3 3、死锁的预防、死锁的预防防止死锁的发生其实就是要破坏产生死锁的条件。预防防止死锁的发生其实

61、就是要破坏产生死锁的条件。预防 死锁通常有以下几种方法:死锁通常有以下几种方法:1)1)一次封锁法一次封锁法 2)2)一次封锁法要求每个事务必须一次将所有要使用的数据一次封锁法要求每个事务必须一次将所有要使用的数据 全部加锁,否则就不能继续执行。全部加锁,否则就不能继续执行。一次封锁法虽然可以有效地防止死锁的发生,但也存在一次封锁法虽然可以有效地防止死锁的发生,但也存在 问题,一次就将以后要用到的全部数据加锁,势必扩大问题,一次就将以后要用到的全部数据加锁,势必扩大 了封锁的范围,从而降低了系统的并发度。了封锁的范围,从而降低了系统的并发度。事务处理技术2)2)顺序封锁法顺序封锁法 3)3)顺

62、序封锁法是预先对数据对象规定一个封锁顺序,所有顺序封锁法是预先对数据对象规定一个封锁顺序,所有 事务都按这个顺序实行封锁。事务都按这个顺序实行封锁。顺序封锁法可以有效地防止死锁,但也同样存在问题。顺序封锁法可以有效地防止死锁,但也同样存在问题。事务的封锁请求往往随着事务的执行而动态地决定,很事务的封锁请求往往随着事务的执行而动态地决定,很 难事先确定每一个事务要封锁哪些对象,因此也就很难难事先确定每一个事务要封锁哪些对象,因此也就很难 按规定的顺序对数据对象加封。按规定的顺序对数据对象加封。事务处理技术4 4、死锁的检测与解除、死锁的检测与解除1)1)超时法超时法2)2)如果一个事务的等待时间

63、超过了规定的时限,就认为发如果一个事务的等待时间超过了规定的时限,就认为发 生了死锁。生了死锁。超时法实现简单,但其不足也很明显。超时法实现简单,但其不足也很明显。一是有可能误判死锁,事务因为其他原因使等待时间超一是有可能误判死锁,事务因为其他原因使等待时间超 过时限,系统会误认为发生了死锁。过时限,系统会误认为发生了死锁。二是时限若设置得太长,死锁发生后不能及时发现。二是时限若设置得太长,死锁发生后不能及时发现。事务处理技术2)2)等待图法等待图法3)3)事务等待图是一个有向图事务等待图是一个有向图G=(T,U)G=(T,U)。 T T为结点的集合,为结点的集合, 每个结点表示正运行的事务;

64、每个结点表示正运行的事务;U U为边的集合,每条边表示事务等待的情况。若为边的集合,每条边表示事务等待的情况。若T1T1等待等待 T2,T2,则则T1T1、T2T2之间划一条有向边,从之间划一条有向边,从T1T1指向指向T2T2。事务等待图动态地反映了所有事务的等待情况。并发控事务等待图动态地反映了所有事务的等待情况。并发控 制子系统周期性地(比如每隔制子系统周期性地(比如每隔1 1分钟)检测事务等待图,分钟)检测事务等待图, 如果发现图中存在回路,则表示系统中出现了死锁。如果发现图中存在回路,则表示系统中出现了死锁。事务处理技术死锁的解除死锁的解除死锁发生后,靠事务自身无法解除,必须由死锁发

65、生后,靠事务自身无法解除,必须由DBMSDBMS干预。干预。通常采用的方法是选择一个处理死锁代价最小的事务,通常采用的方法是选择一个处理死锁代价最小的事务, 将其撤消,释放此事务持有的所有的锁,使其它事务得将其撤消,释放此事务持有的所有的锁,使其它事务得 以继续运行下去。以继续运行下去。当然,对撤消的事务所执行的数据修改操作必须加以恢当然,对撤消的事务所执行的数据修改操作必须加以恢 复。复。事务处理技术 并发调度的可串行性并发调度的可串行性 由于计算机系统对并发操作的调度是随机的,不同的由于计算机系统对并发操作的调度是随机的,不同的调度可能产生不同的结果。如果一个事务运行过程中没有调度可能产生

66、不同的结果。如果一个事务运行过程中没有其他事务同时运行,也就是说它没有受到其他事务的干扰,其他事务同时运行,也就是说它没有受到其他事务的干扰,那么就可以认为该事务的运行结果是正常的或者预想的。那么就可以认为该事务的运行结果是正常的或者预想的。 将所有事务串行起来的调度策略一定是正确的调度策将所有事务串行起来的调度策略一定是正确的调度策略。虽然以不同的顺序串行执行事务可能会产生不同的结略。虽然以不同的顺序串行执行事务可能会产生不同的结果,但由于不会将数据库置于不一致状态,所以都是正确果,但由于不会将数据库置于不一致状态,所以都是正确的。的。事务处理技术不同调度有不同结果的例子不同调度有不同结果的

67、例子 ( (串行调度串行调度) ) T1 T2 T1 T2 读读B B 读读A A A=B+1 B=A+1 A=B+1 B=A+1 写回写回A A 写回写回B B A,B A,B初值为初值为2 2 先执行完先执行完T1,T1,再做再做T2T2 A=3, B=4 A=3, B=4 先执行完先执行完T2,T2,再做再做T1T1 A=4, B=3 A=4, B=3事务处理技术 串行调度串行调度 不可串行化的调度不可串行化的调度 可串行化的调度可串行化的调度 T1 T2 T1 T2 T1 T2 T1 T2 T1 T2 T1 T2SLock B SLock B SLock BSLock B SLock

68、B SLock BY=B=2 Y=B+2 Y=B=2Y=B=2 Y=B+2 Y=B=2Unlock B SLock A UnLock BUnlock B SLock A UnLock BXLock A X=A=2 Xlock AXLock A X=A=2 Xlock AA=Y+1 UnLock BA=Y+1 UnLock B写回写回A(=3) UnLock A Slock AA(=3) UnLock A Slock AUnlock A XLock A A=Y+1 Unlock A XLock A A=Y+1 等待等待 写回写回A(=3) A(=3) 等待等待 SLock A A=Y+1 UnL

69、ock A SLock A A=Y+1 UnLock A 等待等待 X=A=3 X=A=3 写回写回A(=3) X=A=3A(=3) X=A=3 UnLock A XLock B UnLock A UnLock A XLock B UnLock A XLock B B=X+1 Xlock A XLock B B=X+1 Xlock A B=X+1 B=X+1 写回写回B(=3) B=X+1B(=3) B=X+1 写回写回B(=4) UnLock A B(=4) UnLock A 写回写回B(=4)B(=4) UnLock B UnLock B UnLock B UnLock B UnLock

70、B UnLock B结果:结果:A=3, B=4 A=3, B=4 结果:结果:A=3,B=3A=3,B=3 结果:结果:A=3, B=4 A=3, B=4 事务处理技术可串行化调度的定义:可串行化调度的定义: 多个事务的并发执行是正确的,当且仅当其结果与按多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同。我们称这种调度某一次序串行地执行它们时的结果相同。我们称这种调度策略为可串行化(策略为可串行化(SerializableSerializable)的调度。)的调度。 可串行性(可串行性(SerializabilitySerializability)是并发事务正

71、确性的准)是并发事务正确性的准则。按这个准则规定,一个给定的并发调度,当且仅当它则。按这个准则规定,一个给定的并发调度,当且仅当它是可串行化的,才认为是正确的调度。是可串行化的,才认为是正确的调度。事务处理技术为了保证并发操作的正确性,为了保证并发操作的正确性,DBMSDBMS的并发控制机制必须的并发控制机制必须 提供一定的手段来保证调度是可串行化的。提供一定的手段来保证调度是可串行化的。目前目前DBMSDBMS普遍采用加锁方法实现并发操作调度的可串行普遍采用加锁方法实现并发操作调度的可串行 性,从而保证调度的正确性。性,从而保证调度的正确性。 两段锁(两段锁(Two-Phase Lockin

72、gTwo-Phase Locking,简称简称2PL2PL)协议就是保证协议就是保证 并发调度可串行性的加锁协议。并发调度可串行性的加锁协议。事务处理技术两段锁协议两段锁协议(2PL)(2PL)所谓两段锁协议是指所有事务必须分两个阶段对数据项所谓两段锁协议是指所有事务必须分两个阶段对数据项 加锁和解锁:加锁和解锁:1). 1). 在对任何数据进行读、写操作之前,首先要申请并在对任何数据进行读、写操作之前,首先要申请并 获得对该数据的封锁获得对该数据的封锁2). 2). 在释放一个封锁之后,事务不再申请和获得任何其在释放一个封锁之后,事务不再申请和获得任何其 他封锁。他封锁。事务处理技术所谓所谓

73、“两段两段”锁的含义是,事务分为两个阶段,第一阶段是锁的含义是,事务分为两个阶段,第一阶段是 获得封锁,也称为扩展阶段。这在阶段,事务可以申请获获得封锁,也称为扩展阶段。这在阶段,事务可以申请获 得任何数据项上的任何类型的锁,但是不能释放任何锁。得任何数据项上的任何类型的锁,但是不能释放任何锁。第二阶段是释放封锁,也称为收缩阶段。在这阶段,事务第二阶段是释放封锁,也称为收缩阶段。在这阶段,事务 可以释放任何数据项上的任何类型的琐,但是不能再申请可以释放任何数据项上的任何类型的琐,但是不能再申请 任何琐。任何琐。事务处理技术 例如事务例如事务T1T1遵守两段锁协议,其封锁序列是:遵守两段锁协议,

74、其封锁序列是: 又如事务又如事务T2T2不遵守两段锁协议,其封锁序列是:不遵守两段锁协议,其封锁序列是: SlockSlock A Unlock A A Unlock A SlockSlock B B XlockXlock C Unlock C Unlock B C Unlock C Unlock B;事务处理技术 多粒度封锁多粒度封锁1.1.多粒度锁多粒度锁2.2.多粒度封锁协议允许多粒度树中的每个结点被独立地多粒度封锁协议允许多粒度树中的每个结点被独立地 加锁。加锁。对一个结点加锁意味着这个结点的所有后裔结点也被对一个结点加锁意味着这个结点的所有后裔结点也被 加以同样类型的锁。因此,在多粒

75、度封锁中一个数据加以同样类型的锁。因此,在多粒度封锁中一个数据 对象可能以两种方式封锁:对象可能以两种方式封锁:1)1)显式封锁显式封锁2)2)隐式封锁隐式封锁事务处理技术事务处理技术2.2.意向锁意向锁3.3.一般地,对某个数据对象加锁,系统要检查该数据对象一般地,对某个数据对象加锁,系统要检查该数据对象 上有无显式封锁与之冲突;还要检查其所有上级结点,上有无显式封锁与之冲突;还要检查其所有上级结点, 看本事务的显式封锁是否与该数据对象上的隐式封锁看本事务的显式封锁是否与该数据对象上的隐式封锁 (即由于上级结点已加的封锁造成的)冲突;还要检查其(即由于上级结点已加的封锁造成的)冲突;还要检查其 所有下级结点,看上面的显式封锁是否与本事务的隐式所有下级结点,看上面的显式封锁是否与本事务的隐式 封锁(将加到下级结点的封锁)冲突。封锁(将加到下级结点的封锁)冲突。显然,这样的检查方法效率很低。为此人们引进了一种显然,这样的检查方法效率很低。为此人们引进了一种 新型锁,称为意向锁(新型锁,称为意向锁(intention lockintention lock)。)。事务处理技术事务处理技术

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号