数据库事务处理方法、装置、设备及存储介质制造方法及图纸

技术编号:39068426 阅读:17 留言:0更新日期:2023-10-12 20:00
本发明专利技术涉及数据库领域,公开一种数据库事务方法、装置、设备及存储介质。该方法根据数据库事务中的数据处理指令对待处理对象进行处理,对待处理对象置保留锁,保留锁用于表征数据库事务将修改待处理对象;记录对待处理对象进行处理的操作,并将生成的记录通过日志保存;分配更新待处理对象的资源,根据日志对数据库进行更新。由于本申请是通过保留锁对待处理对象的修改进行管理,并通过日志中的记录对数据库进行更新,解决了现有技术RC隔离级别通常采用多版本并发控制机制,但该方法在历史快照中查找及增删节点,在程序内部需要互斥,存在隐式锁,不能并发的问题,同时通过引入更多锁模式,缩短并发事务持有锁的时间,提升了事务处理的并发度。务处理的并发度。务处理的并发度。

【技术实现步骤摘要】
数据库事务处理方法、装置、设备及存储介质


[0001]本专利技术涉及数据库
,尤其涉及一种数据库事务处理方法、装置、设备及存储介质。

技术介绍

[0002]事务处理是数据库的核心功能,为了提升数据库的并发处理性能,SQL标准规定了四种事务隔离级别:Read Uncommitted(读未提交)、Read Committed(读已提交)、Repeatable Read(可重复读)、Serializable(串行化)。其中,使用最多的隔离级别是Read Committed(简称RC),商用数据库SQL Server,Oracle,开源数据库PostgreSQL缺省隔离级别都是RC。
[0003]在现有技术中,RC隔离级别的实现,通常采用多版本并发控制(Multi

Version Concurrency Control,MVCC)机制。多版本并发控制通过保持历史版本快照方式,使得对同一数据的读与写之间无需显示加锁,但存在诸多局限。例如:在历史快照(一般为事务UndoLog形成的版本链表)中查找及增删节点,在程序内部需要互斥,存在隐式锁,不能并发;每次更新与删除都要将更新前数据写UndoLog,存在较大开销等。
[0004]上述内容仅用于辅助理解本专利技术的技术方案,并不代表承认上述内容是现有技术。

技术实现思路

[0005]本专利技术的主要目的在于提供了一种数据库事务处理方法、装置、设备及存储介质,旨在解决现有技术RC隔离级别通常采用多版本并发控制机制,但该方法在历史快照中查找及增删节点,在程序内部需要互斥,存在隐式锁,不能并发;且每次更新与删除都要将更新前数据写UndoLog,存在较大开销技术问题。
[0006]为实现上述目的,本专利技术提供了一种数据库事务处理方法,所述方法包括以下步骤:
[0007]根据数据库事务中的数据处理指令对待处理对象进行处理,并对所述待处理对象置保留锁,所述保留锁用于表征所述数据库事务将修改所述待处理对象;
[0008]记录对所述待处理对象进行处理的操作,并将生成的记录通过日志保存;
[0009]分配更新所述待处理对象的资源,根据所述日志对数据库进行更新。
[0010]可选地,所述根据数据库事务中的数据处理指令对待处理对象进行处理,并对所述待处理对象置保留锁的步骤,包括:
[0011]根据数据库事务中的数据处理指令对待处理对象的标识进行处理,并对待处理对象索引对应槽位添加保留锁;
[0012]基于所述待处理对象索引对应槽位确定待处理对象数据的标识,并对所述待处理对象数据的标识添加保留锁。
[0013]可选地,所述数据处理指令包括数据插入指令、数据删除指令和数据更新指令;所
述根据数据库事务中的数据处理指令对待处理对象的标识进行处理的步骤,包括:
[0014]根据数据库事务中的数据插入指令分配待处理对象的行标识空间;
[0015]或,根据数据库事务中的数据删除指令为待处理对象的标识添加删除状态。
[0016]可选地,所述记录对所述待处理对象进行处理的操作,并将生成的记录通过日志保存的步骤,包括:
[0017]对所述待处理对象进行处理的操作、待处理对象索引对应槽位以及所述待处理对象数据的标识进行记录,并将所述记录写入至重做日志中;
[0018]获取所述待处理对象中加锁的数据,并将所述加锁的数据写入至回滚日志中。
[0019]可选地,所述分配更新所述待处理对象的资源,根据所述日志对数据库进行更新的步骤,包括:
[0020]分配更新所述待处理对象索引所需的资源;
[0021]获取所述重做日志中的待处理对象数据的标识,对各所述待处理对象数据的标识执行置排他锁操作;
[0022]根据所述重做日志中的操作记录进行数据库更新,在每个待处理对象更新完成时,释放所述待处理对象对应的排它锁。
[0023]可选地,所述分配更新所述待处理对象索引所需的资源的步骤之后,还包括:
[0024]若资源分配失败,基于所述回滚日志中保存的数据进行锁释放,以执行数据库事务的回滚操作。
[0025]可选地,所述获取所述重做日志中的待处理对象数据的标识,对各所述待处理对象数据的标识执行置排他锁操作的步骤之后,还包括:
[0026]若所述对各所述待处理对象数据的标识执行置排他锁操作不成功,基于所述回滚日志中保存的数据进行锁释放,以执行数据库事务的回滚操作。
[0027]此外,为实现上述目的,本专利技术还提出了一种数据库事务处理装置,所述装置包括:
[0028]对象处理模块,用于根据数据库事务中的数据处理指令对待处理对象进行处理,并对所述待处理对象置保留锁,所述保留锁用于表征所述数据库事务将修改所述待处理对象;
[0029]日志生成模块,用于记录对所述待处理对象进行处理的操作,并将生成的记录通过日志保存;
[0030]数据更新模块,用于分配更新所述待处理对象的资源,根据所述日志对数据库进行更新,并在更新完成时释放排它锁。
[0031]此外,为实现上述目的,本专利技术还提出一种数据库事务设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据库事务处理程序,所述数据库事务处理程序配置为实现如上文所述的数据库事务处理方法的步骤。
[0032]此外,为实现上述目的,本专利技术还提出一种存储介质,所述存储介质上存储有数据库事务处理程序,所述数据库事务处理程序被处理器执行时实现如上文所述的数据库事务处理方法的步骤。
[0033]本专利技术根据数据库事务中的数据处理指令对待处理对象进行处理,并对待处理对象置保留锁,保留锁用于表征数据库事务将修改待处理对象;记录对待处理对象进行处理
的操作,并将生成的记录通过日志保存;分配更新待处理对象的资源,根据日志对数据库进行更新。由于本申请是通过保留锁对待处理对象的修改进行管理,并通过日志中的记录对数据库进行更新,解决了现有技术RC隔离级别通常采用多版本并发控制机制,但该方法在历史快照中查找及增删节点,在程序内部需要互斥,存在隐式锁,不能并发的问题,同时通过引入更多锁模式,缩短并发事务持有锁的时间,提升了事务处理的并发度。
附图说明
[0034]图1是本专利技术实施例方案涉及的硬件运行环境的数据库事务处理设备的结构示意图;
[0035]图2为本专利技术数据库事务处理方法第一实施例的流程示意图;
[0036]图3为本专利技术数据库事务处理方法第二实施例的流程示意图;
[0037]图4为本专利技术数据库事务处理方法的一个应用场景流程示意图;
[0038]图5为本专利技术数据库事务处理装置第一实施例的结构框图。
[0039]本专利技术目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
[0040]应当理解,此处所描述的具体实施例仅用以解释本专利技术,并不用于限定本专利技术。
[0041]参照图本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据库事务处理方法,其特征在于,所述方法包括:根据数据库事务中的数据处理指令对待处理对象进行处理,并对所述待处理对象置保留锁,所述保留锁用于表征所述数据库事务将修改所述待处理对象;记录对所述待处理对象进行处理的操作,并将生成的记录通过日志保存;分配更新所述待处理对象的资源,根据所述日志对数据库进行更新。2.如权利要求1所述的数据库事务处理方法,其特征在于,所述根据数据库事务中的数据处理指令对待处理对象进行处理,并对所述待处理对象置保留锁的步骤,包括:根据数据库事务中的数据处理指令对待处理对象的标识进行处理,并对待处理对象索引对应槽位添加保留锁;基于所述待处理对象索引对应槽位确定待处理对象数据的标识,并对所述待处理对象数据的标识添加保留锁。3.如权利要求2所述的数据库事务处理方法,其特征在于,所述数据处理指令包括数据插入指令、数据删除指令和数据更新指令;所述根据数据库事务中的数据处理指令对待处理对象的标识进行处理的步骤,包括:根据数据库事务中的数据插入指令分配待处理对象的行标识空间;或,根据数据库事务中的数据删除指令为待处理对象的标识添加删除状态。4.如权利要求3所述的数据库事务处理方法,其特征在于,所述记录对所述待处理对象进行处理的操作,并将生成的记录通过日志保存的步骤,包括:对所述待处理对象进行处理的操作、待处理对象索引对应槽位以及所述待处理对象数据的标识进行记录,并将所述记录写入至重做日志中;获取所述待处理对象中加锁的数据,并将所述加锁的数据写入至回滚日志中。5.如权利要求4所述的数据库事务处理方法,其特征在于,所述分配更新所述待处理对象的资源,根据所述日志对数据库进行更新的步骤,包括:分配更新所述待处理对象索引所需的资源;获取所述重做日志中的待处理对象数据的标识...

【专利技术属性】
技术研发人员:易其亮蔡林山胡龙张晗
申请(专利权)人:深圳市金证科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1