[发明专利]事务的回滚方法和装置,以及关系数据库管理系统有效
申请号: | 201380027716.4 | 申请日: | 2013-08-14 |
公开(公告)号: | CN104603775B | 公开(公告)日: | 2018-06-19 |
发明(设计)人: | 马赫什·库马尔·巴赫热;阿米特·卡皮拉;阿努拉格·古普塔 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京中博世达专利商标代理有限公司 11274 | 代理人: | 申健 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 撤销 回滚 记录 关系数据库管理系统 事务 方法和装置 数据对应 资源释放 释放 释放锁 保存 应用 | ||
本发明的各项实施例提供事务的回滚方法和装置,以及关系数据库管理系统。所述方法包括:当回滚到保存点时,从事务块中获取撤销记录;判断所述撤销记录是否为数据的第一撤销记录;如果所述撤销记录为所述第一撤销记录,在所述数据对应的LCB上标记释放信息,使得在应用所述撤销操作后释放一个或多个等待所述LCB的事务。在本发明中,即使一些事务正在等待同一元组,也可以释放锁。此外,在回滚到保存点期间不存在单独的资源释放锁。
技术领域
本发明涉及数据库技术,尤其涉及事务的回滚方法和装置,以及关系数据库管理系统。
背景技术
关系数据库管理系统(relational database management systems,RDBMS)中,“事务”指的是工作站和程序之间、两个工作站或两个程序之间的交换。这些工作站或程序完成了特定动作或结果。交换开始时,事务开启;提交特定动作或结果时,事务结束。
一些传统的RDBMS通过使用保存点(savepoint)来支持子事务。保存点在事务开始和提交之间创建。保存点允许撤销某个保存点之后的数据修改。本文中称为“回滚到保存点”。大多数关系数据库系统使用撤销记录或撤销记录的某一变体进行多版本控制以保存读事务待使用的同一记录的不同版本。
为了保证事务发生时具有完整性,必须防止两个事务同时更新同一数据。通常使用正在更新的数据上的锁。当事务对对象进行加锁时,事务使用数据结构对该对象进行标记以通知其它事务有关该锁和对该对象进行的操作类型的信息。该标记为控制块结构,有时也称为锁控制块(Lock Control Block,LCB)。
当回滚到某个保存点时,必须考虑该保存点之后获取的锁。可释放这些用于使得修改(现已回滚)不为其它事务所见的锁。因此,当回滚到保存点并唤醒其它事务等待对锁定行进行操作时存在对用于选择性地释放锁的方法的需求。
然而,发明人发现在现有技术中,当回滚到某个保存点后,等待中的事务未被唤醒;或者,即使在回滚到保存点后,锁被释放并且等待中的事务被唤醒,也需要扫描整个锁列表来匹配对应的资源。
发明内容
本发明的各项实施例涉及事务的回滚方法和装置,以及关系数据库管理系统。
根据本发明的实施例的第一方面,提供一种在关系数据库管理系统中应用的事务的回滚方法,所述方法包括:
当回滚到保存点时,从事务块中获取撤销记录;
判断所述撤销记录是否为数据的第一撤销记录;
如果所述撤销记录为所述第一撤销记录,则在所述数据对应的锁控制块LCB上标记释放信息,使得在应用所述撤销操作后释放一个或多个等待所述LCB的事务。
根据本发明的实施例的第二方面,提供一种在关系数据库管理系统中应用的事务的回滚装置,所述装置包括:
第一获取单元,用于当回滚到保存点时,从事务块中获取撤销记录;
第一判断单元,用于判断所述撤销记录是否为数据的第一撤销记录;
标记单元,用于如果所述撤销记录为所述第一撤销记录,在所述数据对应的LCB上标记释放信息。
根据本发明的实施例的第三方面,提供一种关系数据库管理系统,其中所述关系数据库管理系统包括如上所述的事务的回滚装置。
本发明的优点在于:由于锁释放算法仅需要遍历锁列表一次,所以该算法更为高效;并且即使一些事务正在等待同一元组,也可以释放锁。此外,在回滚到保存点期间不存在单独的资源释放锁。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201380027716.4/2.html,转载请声明来源钻瓜专利网。