1 / 9

第十五章 其它事务处理技术 前两章分别介绍了并发控制技术和系统恢复技术, 本章介绍其它三种事务处理技术:死锁处理;高 性能事务处理系统和长事务处理技术。死锁处理

O. 第十五章 其它事务处理技术 前两章分别介绍了并发控制技术和系统恢复技术, 本章介绍其它三种事务处理技术:死锁处理;高 性能事务处理系统和长事务处理技术。死锁处理 可以作为并发控制等技术的补充。高性能事务处 理技术主要讨论在发展硬件和提高并发性之外的 高速事务处理技术。长事务主要是指由于包含交 互性应用等人工干预环节而造成运行时间过长的 事务。在前述并发控制技术中起着关键作用的可 串行性概念并不适用于长事务处理。这里仅介绍 一些基本的方法。 第一节 死锁处理 第二节 高性能事务处理系统 第三节 长事务处理技术. O1. 第一节 死锁处理

Télécharger la présentation

第十五章 其它事务处理技术 前两章分别介绍了并发控制技术和系统恢复技术, 本章介绍其它三种事务处理技术:死锁处理;高 性能事务处理系统和长事务处理技术。死锁处理

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. O 第十五章 其它事务处理技术 前两章分别介绍了并发控制技术和系统恢复技术, 本章介绍其它三种事务处理技术:死锁处理;高 性能事务处理系统和长事务处理技术。死锁处理 可以作为并发控制等技术的补充。高性能事务处 理技术主要讨论在发展硬件和提高并发性之外的 高速事务处理技术。长事务主要是指由于包含交 互性应用等人工干预环节而造成运行时间过长的 事务。在前述并发控制技术中起着关键作用的可 串行性概念并不适用于长事务处理。这里仅介绍 一些基本的方法。 第一节 死锁处理 第二节 高性能事务处理系统 第三节 长事务处理技术

  2. O1 第一节 死锁处理 在数据库系统运行期间,若事务集合T={T0 ,T1 ,…,Tn}的状态为 T0等待T1对某数据项解锁; T1等待T2对某数据项解锁; ………………; Tn等待T0对某数据项解锁。 则称系统处于死锁状态,称T为死锁事务集合。 解决死锁的方法主要有两类: 1 使用预防死锁协议使死锁状态不会出现。协议的目的是破 坏产生死锁的条件。 2 建立对死锁的检测和恢复机制,使系统摆脱死锁状态。检 测方法主要有简单的超时法和准确的等待图法。摆脱死锁 的基本原理是撤销某些陷入死锁的事务,释放其获得的锁 和其它资源。 当死锁的发生概率较高时,用第1类方法效率较高,否则使用第 2类方法较好。下边分别介绍这两类方法。 接下页

  3. 预防死锁协议 • 避免系统陷入死锁状态有多种方法。其中三种主要的方法是: • 一次封锁:事务自始至终锁住全部有关的数据项。这种方法有 • 效地防止死锁的产生,但以牺牲并发性为代价。 • 顺序封锁:定义数据项的部分序。事务按部分序对数据项加锁. • 树协议就是一例。缺点是部分序的维护复杂。 • 时间印技术:对访问同一数据项的两个事务,比较其时间印, • 决定是等待还是撤消。重启事务保持时间印不变。 O11 下边是两个使用时间印(简记为TS)的预防死锁协议 1 ‘等待或死亡’协议 前后两事务访问相同数据项,若后事务的TS较小, 则等待前事务解锁,否则,后事务被撤消。重启事务保持TS。 2 ‘等待或伤害’协议 前后两事务访问相同数据项,若后事务TS较大, 则等待前事务解锁,否则,前事务被撤消。重启事务保持TS。 撤销事务总是TS较大者。新事务的TS较大,故易被撤销。由于在线 事务的TS总体递增,重启事务的TS保持其值而变得相对较小,故事 务至多经数次撤销重启总能执行。不发生事务间互相等待的现象。 接下页

  4. O12 二 . 死锁检测和恢复技术 这种技术允许死锁出现,但须建立对死锁的检测和恢复机制。 [死锁检测]最简单的检测方法是超时法:若事务等待超过规定的 时间,则认为死锁已出现。此方法可能误判。较准确的是事 务等待图方法。事务等待图是一个有向图G(V,E)。点集V表 示运行中的事务集,有向边E(V1,V2)表示事务V1等待事务V2 释放所需的数据项。显然,系统出现死锁的充要条件是事务 等待图有环。环中的点构成了死锁事务集合。可用图论的回 路算法检测图中是否有环。系统运行时DBMS周期性地检测 事务等待图。检测周期的长短取决于死锁频繁出现的程度以 及陷入死锁状态的事务个数。 [死锁恢复]主要的方法是撤消某些死锁事务并消去图中的环。 撤消事务的选择:最多回路交叉处事务和最小撤消代价事务。 影响撤销代价的因素是:已完成和未完成的计算量; 已使用和未使用的数据项;同时撤销的事务数等。 撤消事务的方法:放弃该事务,undo其所有操作,重新启动。 无限等待问题: 若采用基于代价的选择,为避免某些事务总 被选上导致无限等待,可把已撤销次数包含在代价中。

  5. O2 • 第二节 高性能事务处理系统 • 为了实现高性能的事务处理系统,除了引入高性能硬件和充分发 • 挥系统的并行性外,还需要其它技术,下边介绍两个方面: • 主存数据库 • 数据库系统的性能受到磁盘读写速度的限制。增加主存缓冲区 • 的大小可以减少这种限制。若大容量主存储器足以容纳整个数 • 据库,则应用系统的性能就能得到最大的发挥。虽然大型数据 • 库无法全部放入主存,但大部分数据放入主存同样可以加快事 • 务处理的速度。但注意增大缓冲区同时也增加管理的复杂性, • 例如检测点的操作、故障恢复后缓冲区数据的重建以及日志记 • 录向永恒存储器的输出,都不同程度地增加时间上的开销。 • 二 事务的成批提交技术 • 每个事务T的提交都需要对永恒存储器作读和写两次操作: • 第一次把与T有关的记录读到主存;第二次把(T,commits)写入 • 永恒。传输的数据中只有少部分是更新数据,I/O时间的利用 • 率低。事务的成批提交技术是指多个事务完成后才集中提交。 • 可以节省访问永恒存储器的次数,也可以提高传送有用数据的 • 比例。缺点是延迟事务提交。高性能系统可以接受这种延迟。

  6. O3 第三节 长事务处理技术 前述的事务一般假定运行时间较短和非交互式操作。并发控制 和数据库恢复技术能有效处理这些事务。但当这些技术应用到 交互性的长事务,将引起严重的问题。长事务特点如下: 1 人工干预必然造成运行时间长 2 用户和其它事务在长事务结束前被迫使用未提交数据; 3 用户希望仅撤消长事务的某个子任务,尽量避免重复工作; 4 故障后用户希望恢复到最近状态,保留更多的人工工作; 5 响应时间是交互式事务系统更重要的性能指标。 一. 可串行性概念不适合于长事务处理 前述的并发控制协议只允许可串行调度,不适合处理长事务。 两段锁协议:当事务等待长事务解锁时,长等待增加死锁机会, 数据图协议:因解锁后不得再加锁,故长事务将长时间不解锁, 延长系统响应的时间。 时间印协议:若撤消长事务,将失去大量工作,包括用户手工 操作的结果。 这些协议还可能引起事务的嵌套撤销,对长事务更为不利。 因此对长事务的并发控制不应该依赖可串行性的概念。 接下页

  7. O31 二 嵌套事务技术 把长事务T构造成具有部分序P的一组子事务{Ti}的集合,其中 某些子事务可以并发运行。当系统发生故障时,数据库恢复机 构根据需要可以撤消部分子事务Ti,而不必撤消长事务T。T可 重新启动运行这些被撤消的子事务Ti或简单地废弃之。Ti的提 交只是对T提交, Ti对数据库的影响并不永久地写入数据库。 只有T的提交才综合地体现出各子事务对数据库的影响。长事 务T的执行遵循部分序P. 下图表示了由四个具有部分序的子事务组成的长事务。子事务 11a和11b可并发运行。由于系统发生某种故障,恢复机构仅撤 销子事务111。由于没有撤销其它子事务,因而在系统恢复中避 免了大量重复性的操作,特别是人工操作。 子事务11a 子事务1 子事务111 子事务11b 接下页 可并发运行 允许长事务有多级的嵌套结构,即子事务由若干个具有部分序 的子事务组成。最低级别的子事务包含标准操作read和write.

  8. O32 三 补救事务技术 对于非交互方式的短事务,为了保证事务 的原子性,采用了undo操作撤消失败事务 对数据库的影响。这种处理方法并不适合 于长事务。原因是未提交数据的扩散,会 造成大量的事务嵌套撤销。 补救事务技术并不撤销异常结束事务对数 据库的修改,而是采取特殊行动来补救所 引起的问题。这种特殊行动通常是为每一 个事务写出其专用的补救算法。 如右图,事务T1和T2的调度并不满足冲突 可串行性,但结果是正确的。若T2在结束 前发生故障,按照嵌套撤销规则,两个事 务都必须作undo处理。若采用补救事务技 术,每个事务都必须预先提供补救算法, 其中T2的补救算法是a:=a+2;b:=b-2.由于此 例的故障出现在T2,所以仅运行T2对应的 补救事务就可以了。恢复行动不必考虑T1 T1 T2 read(a); a:=a-1; write(a); read(b); b:=b-2; write(b); read(b); b:=b+1; write(b); read(a); a:=a+2; write(a); 故障; T2的补救算法: a:=a+2;b:=b-2; 接下页

  9. O33 • 实时数据库系统 • 实时数据库系统(Real Time Database System,RTDBS)是指被用于 • 实时控制领域的数据库系统。例如电力调度、交通控制、证券 • 交易等管理系统使用的数据库系统就属于RTDBS。RTDBS事务 • 的运行往往具有时间限制,要求在指定时间内完成。这种应用 • 系统既需要数据库支持数据共享,维护其数据的一致性,又需 • 要实时处理支持事务的定时限制。故系统的实现有很高的难度。 • 若并发控制协议决定事务T等待解锁,系统有时会强制另一事务 • S解锁使T得以按时完成。但这样处理必须倍加小心,因为强制 • S解锁导致S的撤销和重启,可能使S未必能在指定时间内完成。 • 系统决定让T等待还是决定撤销其它事务,很难建立一个准确的 • 判断条件。原因是事务的执行复杂性与系统的即时状态密切相 • 关。例如,当T所需要的数据项Q已经读入主存缓冲区,则T读 • Q的执行时间很短,但若Q不在主存缓冲区,则T就必须从磁盘 • 读取Q,执行时间将增加若干个数量级。 • RTDB并非是数据库和实时系统两者的简单结合,它需要对一系 • 列的概念、理论、技术、方法和机制进行研究开发。国内外均 • 已出现成功的实验系统。

More Related