90 likes | 171 Vues
O. 第十五章 其它事务处理技术 前两章分别介绍了并发控制技术和系统恢复技术, 本章介绍其它三种事务处理技术:死锁处理;高 性能事务处理系统和长事务处理技术。死锁处理 可以作为并发控制等技术的补充。高性能事务处 理技术主要讨论在发展硬件和提高并发性之外的 高速事务处理技术。长事务主要是指由于包含交 互性应用等人工干预环节而造成运行时间过长的 事务。在前述并发控制技术中起着关键作用的可 串行性概念并不适用于长事务处理。这里仅介绍 一些基本的方法。 第一节 死锁处理 第二节 高性能事务处理系统 第三节 长事务处理技术. O1. 第一节 死锁处理
E N D
O 第十五章 其它事务处理技术 前两章分别介绍了并发控制技术和系统恢复技术, 本章介绍其它三种事务处理技术:死锁处理;高 性能事务处理系统和长事务处理技术。死锁处理 可以作为并发控制等技术的补充。高性能事务处 理技术主要讨论在发展硬件和提高并发性之外的 高速事务处理技术。长事务主要是指由于包含交 互性应用等人工干预环节而造成运行时间过长的 事务。在前述并发控制技术中起着关键作用的可 串行性概念并不适用于长事务处理。这里仅介绍 一些基本的方法。 第一节 死锁处理 第二节 高性能事务处理系统 第三节 长事务处理技术
O1 第一节 死锁处理 在数据库系统运行期间,若事务集合T={T0 ,T1 ,…,Tn}的状态为 T0等待T1对某数据项解锁; T1等待T2对某数据项解锁; ………………; Tn等待T0对某数据项解锁。 则称系统处于死锁状态,称T为死锁事务集合。 解决死锁的方法主要有两类: 1 使用预防死锁协议使死锁状态不会出现。协议的目的是破 坏产生死锁的条件。 2 建立对死锁的检测和恢复机制,使系统摆脱死锁状态。检 测方法主要有简单的超时法和准确的等待图法。摆脱死锁 的基本原理是撤销某些陷入死锁的事务,释放其获得的锁 和其它资源。 当死锁的发生概率较高时,用第1类方法效率较高,否则使用第 2类方法较好。下边分别介绍这两类方法。 接下页
预防死锁协议 • 避免系统陷入死锁状态有多种方法。其中三种主要的方法是: • 一次封锁:事务自始至终锁住全部有关的数据项。这种方法有 • 效地防止死锁的产生,但以牺牲并发性为代价。 • 顺序封锁:定义数据项的部分序。事务按部分序对数据项加锁. • 树协议就是一例。缺点是部分序的维护复杂。 • 时间印技术:对访问同一数据项的两个事务,比较其时间印, • 决定是等待还是撤消。重启事务保持时间印不变。 O11 下边是两个使用时间印(简记为TS)的预防死锁协议 1 ‘等待或死亡’协议 前后两事务访问相同数据项,若后事务的TS较小, 则等待前事务解锁,否则,后事务被撤消。重启事务保持TS。 2 ‘等待或伤害’协议 前后两事务访问相同数据项,若后事务TS较大, 则等待前事务解锁,否则,前事务被撤消。重启事务保持TS。 撤销事务总是TS较大者。新事务的TS较大,故易被撤销。由于在线 事务的TS总体递增,重启事务的TS保持其值而变得相对较小,故事 务至多经数次撤销重启总能执行。不发生事务间互相等待的现象。 接下页
O12 二 . 死锁检测和恢复技术 这种技术允许死锁出现,但须建立对死锁的检测和恢复机制。 [死锁检测]最简单的检测方法是超时法:若事务等待超过规定的 时间,则认为死锁已出现。此方法可能误判。较准确的是事 务等待图方法。事务等待图是一个有向图G(V,E)。点集V表 示运行中的事务集,有向边E(V1,V2)表示事务V1等待事务V2 释放所需的数据项。显然,系统出现死锁的充要条件是事务 等待图有环。环中的点构成了死锁事务集合。可用图论的回 路算法检测图中是否有环。系统运行时DBMS周期性地检测 事务等待图。检测周期的长短取决于死锁频繁出现的程度以 及陷入死锁状态的事务个数。 [死锁恢复]主要的方法是撤消某些死锁事务并消去图中的环。 撤消事务的选择:最多回路交叉处事务和最小撤消代价事务。 影响撤销代价的因素是:已完成和未完成的计算量; 已使用和未使用的数据项;同时撤销的事务数等。 撤消事务的方法:放弃该事务,undo其所有操作,重新启动。 无限等待问题: 若采用基于代价的选择,为避免某些事务总 被选上导致无限等待,可把已撤销次数包含在代价中。
O2 • 第二节 高性能事务处理系统 • 为了实现高性能的事务处理系统,除了引入高性能硬件和充分发 • 挥系统的并行性外,还需要其它技术,下边介绍两个方面: • 主存数据库 • 数据库系统的性能受到磁盘读写速度的限制。增加主存缓冲区 • 的大小可以减少这种限制。若大容量主存储器足以容纳整个数 • 据库,则应用系统的性能就能得到最大的发挥。虽然大型数据 • 库无法全部放入主存,但大部分数据放入主存同样可以加快事 • 务处理的速度。但注意增大缓冲区同时也增加管理的复杂性, • 例如检测点的操作、故障恢复后缓冲区数据的重建以及日志记 • 录向永恒存储器的输出,都不同程度地增加时间上的开销。 • 二 事务的成批提交技术 • 每个事务T的提交都需要对永恒存储器作读和写两次操作: • 第一次把与T有关的记录读到主存;第二次把(T,commits)写入 • 永恒。传输的数据中只有少部分是更新数据,I/O时间的利用 • 率低。事务的成批提交技术是指多个事务完成后才集中提交。 • 可以节省访问永恒存储器的次数,也可以提高传送有用数据的 • 比例。缺点是延迟事务提交。高性能系统可以接受这种延迟。
O3 第三节 长事务处理技术 前述的事务一般假定运行时间较短和非交互式操作。并发控制 和数据库恢复技术能有效处理这些事务。但当这些技术应用到 交互性的长事务,将引起严重的问题。长事务特点如下: 1 人工干预必然造成运行时间长 2 用户和其它事务在长事务结束前被迫使用未提交数据; 3 用户希望仅撤消长事务的某个子任务,尽量避免重复工作; 4 故障后用户希望恢复到最近状态,保留更多的人工工作; 5 响应时间是交互式事务系统更重要的性能指标。 一. 可串行性概念不适合于长事务处理 前述的并发控制协议只允许可串行调度,不适合处理长事务。 两段锁协议:当事务等待长事务解锁时,长等待增加死锁机会, 数据图协议:因解锁后不得再加锁,故长事务将长时间不解锁, 延长系统响应的时间。 时间印协议:若撤消长事务,将失去大量工作,包括用户手工 操作的结果。 这些协议还可能引起事务的嵌套撤销,对长事务更为不利。 因此对长事务的并发控制不应该依赖可串行性的概念。 接下页
O31 二 嵌套事务技术 把长事务T构造成具有部分序P的一组子事务{Ti}的集合,其中 某些子事务可以并发运行。当系统发生故障时,数据库恢复机 构根据需要可以撤消部分子事务Ti,而不必撤消长事务T。T可 重新启动运行这些被撤消的子事务Ti或简单地废弃之。Ti的提 交只是对T提交, Ti对数据库的影响并不永久地写入数据库。 只有T的提交才综合地体现出各子事务对数据库的影响。长事 务T的执行遵循部分序P. 下图表示了由四个具有部分序的子事务组成的长事务。子事务 11a和11b可并发运行。由于系统发生某种故障,恢复机构仅撤 销子事务111。由于没有撤销其它子事务,因而在系统恢复中避 免了大量重复性的操作,特别是人工操作。 子事务11a 子事务1 子事务111 子事务11b 接下页 可并发运行 允许长事务有多级的嵌套结构,即子事务由若干个具有部分序 的子事务组成。最低级别的子事务包含标准操作read和write.
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; 接下页
O33 • 实时数据库系统 • 实时数据库系统(Real Time Database System,RTDBS)是指被用于 • 实时控制领域的数据库系统。例如电力调度、交通控制、证券 • 交易等管理系统使用的数据库系统就属于RTDBS。RTDBS事务 • 的运行往往具有时间限制,要求在指定时间内完成。这种应用 • 系统既需要数据库支持数据共享,维护其数据的一致性,又需 • 要实时处理支持事务的定时限制。故系统的实现有很高的难度。 • 若并发控制协议决定事务T等待解锁,系统有时会强制另一事务 • S解锁使T得以按时完成。但这样处理必须倍加小心,因为强制 • S解锁导致S的撤销和重启,可能使S未必能在指定时间内完成。 • 系统决定让T等待还是决定撤销其它事务,很难建立一个准确的 • 判断条件。原因是事务的执行复杂性与系统的即时状态密切相 • 关。例如,当T所需要的数据项Q已经读入主存缓冲区,则T读 • Q的执行时间很短,但若Q不在主存缓冲区,则T就必须从磁盘 • 读取Q,执行时间将增加若干个数量级。 • RTDB并非是数据库和实时系统两者的简单结合,它需要对一系 • 列的概念、理论、技术、方法和机制进行研究开发。国内外均 • 已出现成功的实验系统。