高级数据库系统中的并发控制问题

2022-09-10

数据库系统通过运行事务管理程序实现并发控制和恢复等功能, 一段设计合理正确的程序, 在实际运行时仍可能无法正确的完成, 因为在程序运行的环境中存在两个因素并发和故障, 这两个因素是不受程序本身控制的。人们不期望故障的发生, 但故障又是不可避免的。受计算机系统软件和硬件故障的影响, 程序经常会被中断而无法正确完成。其对数据库造成的影响要通过一些方法来消除, 这就是在数据库系统中关于恢复讨论的问题。提高系统效率的高效手段是并发, 若程序并发同时存取共享数据的时候, 它们之间会相互干扰, 为了获得正确的并发运行, 保证数据库的一致性, 这是数据库系统中关于并发控制要讨论的问题。

1 并发控制与恢复

1.1 高级数据库系统通过运行事务的管理程序来实现并发控制恢复功能

运行事务的管理程序是一组基本完整的运行程序, 原子性是其基本特征, 可以从两方面理解事务的原子性特征:一是存取共享数据的事务都是独立的, 不受其它事务的干扰;第二点是如果事务正常结束任务, 系统将保存它操作的结果, 如若事务出现异常结束, 系统会消除它对数据库带来的影响。可以看出保证事务的原子性, 就可以保证数据库状态的一致性。数据库系统通过并发控制的方法实现了事务的原子性特点, 如果事务运行失败, 就由数据库系统的恢复操作维护事务的原子性。所以说事务是逻辑上的单位, 只是代表了一组基本完整程序的操作;同时事务也是并发控制的单位, 目的是使事务的运行不受干扰;恢复的单位也是事务, 为了使事务的运行成功, 不对数据库产生影响, 并发控制和恢复可以联合保证数据库的管理系统所维护数据库状态的一致性。

1.2 高级数据库系统数据库恢复

(1) 恢复工作步骤。

(1) 对数据库进行完全性检查;

(2) 了解备份设备中的内容;

(3) 针对数据库恢复类型及备份内容选择不同的恢复策略;

(2) 恢复策略。

不同恢复类型的数据库采用不同的恢复方案, 对于完全恢复模型的数据库恢复按如下次序进行。

(1) 恢复最近的一次完全备份;

(2) 恢复最后一个差异备份 (有的话) ;

(3) 从最后一个差异备份时刻后按时间的先后恢复;

(4) 每一个事务日志备份 (有的话) 。

对容量日志记录恢复模型恢复方法也是如此如:对一个简单型数据库星期一进行了完全数据库备份, 星期二进行了差异备份, 星期三进行了完全数据库备份, 星期四进行了差异备份, 星期五进行了差异备份, 星期六出现故障。

恢复策略应为:恢复星期三的完全数据库备份和星期五的差异备份, 在讨论恢复时, 我们关心的是经历是否可以恢复, 而讨论并发控制的时侯, 我们关心的是怎样可以获得可串行经历。串行经历可以维护数据库的一致性, 而可串行经历就相当于一个串行经历。所以可串行经历是可以维护数据库状态一致的经历。在传统数据库系统中可串行性可以判断并发事务运行的正确性。

2 传统的并发控制方法

实时协同设计系统中, 是多用户共享工作空间, 共享的数据资源, 用户在一定的规则下并行的对共享数据操作, 为了保证协同设计系统的正常运行, 必须保证共享数据一致性。这也是实时协同设计系统要攻克的难关。为此, 研究人员提出多种解决并发控制一致性的策略。

在解决并发控制问题的典型策略有以下几种:加锁法可以给共享对象提供加锁和解锁的操作。用户如若想访问共享对象之前, 需获得此对象的锁。这种方法适合低度的并行交互。操作转换的方法是对共享对象的本地操作马上执行, 而远程操作在执行之前需对操作的参数进行调整, 来补偿由执行其它操作所引起的共享对象状态的变化。而集中控制方法是使用集中控制进程管理共享对象的操作。它同时接收多个用户的操作, 按一定规则排序, 之后用户按序执行, 保证了一致性。

3 高级数据库系统对并发控制的新需求及解决方法

高级数据库系统的显著特点是其事务的生存期很长, 一般可以持续几个小时至几天, 所以被称为长事务。长事务导致事务之间的冲突及死锁的概率增加。如果有冲突或者死锁的发生, 传统的方法只能是以冲突事务等待或者撤消死锁事务为途径解决。长事务存在的结果可能导致超长时间的等待, 或长事务被撤消将会造成多个用户的大量工作徒劳, 数小时以至多天的工作完全报废, 损失极为严重。这样传统的并发控制方法, 并不能适应高级数据库的应用需求。

现在, 对于长事务并发控制方法的研究共分为两大流派:一个是以可串行性来做为判断事务正确运行的标准, 还可以利用事务的语义扩展可串行化技术, 最终达到使系统并发度提高的目的。现以利它锁协议为示例。其二是突破可串行性标准的制约, 高度利用应用层语义及一致性谓词来构造非串行化的及维护数据库状态一致的事务经历, 例如基于NTPV模型并发控制的方法.先分述如下。

3.1 利它锁协议

通过对2PL方法扩展放松条件, 使事务可以有机会获取需要的锁, 利它锁的方法可以有效缓解因长事务存在引起的较短事务的长等待的状况。这种方法使系统获得更大的并发度, 使高级数据库系统的异发控制得到制约。利它锁适用于有长事务的高级数据库系统的并发控制的方法。但2PL也是不可避免的发生死锁, 而且也是不可能把长事务并发控制的问题全部解决, 但它可以有效的缓解事务的长期等待, 提高系统的并发度, 是相对适合长事务并发控制的一种方法。其基本思想是遵守2PL规则的同时, 对于长事务所占用的数据项, 一旦确定该事务不再使用这个数据项时, 就尽快解除相应锁, 方便其它事务的使用, 这就基本等于把事务获得锁的条件放宽, 较好的缓解了事务需长期等待的状况, 而且它同样具有2PL的优点:易实现、易理解和确保事务的可串行运行。当然也同时存在2PL所存在的问题。为了把事务不使用的数据项转让给其它的事务及时使用, 利它锁协议就在加锁和解锁两个基本的并发控制操作的基础之上, 添加了赠锁, 这是第三种并发控制操作, 而经过赠锁的数据项, 就可被其它用户使用了。当然赠锁操作是不可以代替解锁操作的, 最终事务是必须由解锁释放所有的数据项, 而不管其是否已经赠锁其中任一数据项。赠锁的操作基本规有两点, 其一是事务只能对当前上锁的数据项实行赠锁的操作, 二是事务不可以存取已经被自己赠锁的数据项。

3.2 基于NTPV模型的并发控制方法

NTPV模型在模型中引入了谓词和多版本的嵌套事务, 这也是这个事务模型名字的由来。这个模型被认为是适合长事务的事务模型, 它的并发控制方法突破了可串行化的限制, 被认为是具有前途的一种适于长事务管理并发控制方法。在NTPV模型中我们把每个事务都可看成是由若干个子事务组成的, 而每个子事务又是一个事务的模型称为嵌套事务。如此形成的事务嵌套树, 用树的叶结点来代表数据库的操作, 用谓词来表示数据库地一致性限制, 而多版本允许一个数据项同时存在不同时期多个版本值。NTPV模型应用了这三个概念, 可以更好的描述划分长事务, 对提高系统并发度极为有利。在NTPV模型当中, 把事务的运行看作是数据库状态的转变, 是对满足一致性谓词的转变。如果事务运行将数据库的状态从满足输入一致性谓词转换之后为满足输出一致性谓词, 则NTPV模型运行正确。但它也许不是一个可串行经历, 却是一个维护数据库状态一致性的正确经历。

4 结语

数据库技术的主要功能是提供数据的共享, 而数据库管理系统的根本任务是维护数据库的一致性。利它锁方法及基于NTPV的并发控制的方法, 它们代表了两种不同方向的工作成果。其前者是试图改进传统的方法来适应数据库应用的新需求, 后者则尝试着突破传统的方法局限利用应用层语义, 来构造新的正确性的事务经历, 这个工作更加的复杂和艰难, 它为高级数据库的并发控制新方法的开创, 提供了未来的可能性, 其更具有挑战性和意义。由于其系统的复杂及不成熟, 还未在面向的数据库管理系统中应用。开发实用有效的并发控制技术, 是我们不断努力的目标。

摘要:数据库是一个可以被多个用户同时使用的共享资源, 为了充分发挥数据库共享资源的特点, 更好的利用数据库资源, 这样就产生多用户并发存取同一数据的情况, 必须对并发操作加以控制, 保持数据库的一致性。本文讨论了高级数据库系统的并发控制问题, 总结了数据库系统并发控制与恢复问题, 分析了当前高级数据库系统使用的几种并发控制方法。

关键词:高级数据库,并发控制,解决方法

参考文献

[1] 张杰敏.有关高级数据库系统中的并发控制问题[J].华北工学院学报, 1998, 19 (3) .

[2] 章叶芹.协同CAD环境下并发控制问题的研究与解决[J].Computer Era No.11, 2006.

[3] 孙建伶, 何志均.高级数据库系统中基于语义的并发控制计算机科学[M].1994.

[4] 张杰敏.适于高级数据库并发控制的方法-利它锁[J].华北工学院学报, 1999, 20 (1) .

上一篇:新形势下如何全面正确贯彻落实民族区域自治法下一篇:我国行政程序说明理由制度的困境与出路