数据库事务处理方法、装置、设备及存储介质与流程
未命名
10-18
阅读:101
评论:0
1.本发明涉及数据库技术领域:
:,尤其涉及一种数据库事务处理方法、装置、设备及存储介质。
背景技术:
::2.事务处理是数据库的核心功能,为了提升数据库的并发处理性能,sql标准规定了四种事务隔离级别:readuncommitted(读未提交)、readcommitted(读已提交)、repeatableread(可重复读)、serializable(串行化)。其中,使用最多的隔离级别是readcommitted(简称rc),商用数据库sqlserver,oracle,开源数据库postgresql缺省隔离级别都是rc。3.在现有技术中,rc隔离级别的实现,通常采用多版本并发控制(multi-versionconcurrencycontrol,mvcc)机制。多版本并发控制通过保持历史版本快照方式,使得对同一数据的读与写之间无需显示加锁,但存在诸多局限。例如:在历史快照(一般为事务undolog形成的版本链表)中查找及增删节点,在程序内部需要互斥,存在隐式锁,不能并发;每次更新与删除都要将更新前数据写undolog,存在较大开销等。4.上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。技术实现要素:5.本发明的主要目的在于提供了一种数据库事务处理方法、装置、设备及存储介质,旨在解决现有技术rc隔离级别通常采用多版本并发控制机制,但该方法在历史快照中查找及增删节点,在程序内部需要互斥,存在隐式锁,不能并发;且每次更新与删除都要将更新前数据写undolog,存在较大开销技术问题。6.为实现上述目的,本发明提供了一种数据库事务处理方法,所述方法包括以下步骤:7.根据数据库事务中的数据处理指令对待处理对象进行处理,并对所述待处理对象置保留锁,所述保留锁用于表征所述数据库事务将修改所述待处理对象;8.记录对所述待处理对象进行处理的操作,并将生成的记录通过日志保存;9.分配更新所述待处理对象的资源,根据所述日志对数据库进行更新。10.可选地,所述根据数据库事务中的数据处理指令对待处理对象进行处理,并对所述待处理对象置保留锁的步骤,包括:11.根据数据库事务中的数据处理指令对待处理对象的标识进行处理,并对待处理对象索引对应槽位添加保留锁;12.基于所述待处理对象索引对应槽位确定待处理对象数据的标识,并对所述待处理对象数据的标识添加保留锁。13.可选地,所述数据处理指令包括数据插入指令、数据删除指令和数据更新指令;所述根据数据库事务中的数据处理指令对待处理对象的标识进行处理的步骤,包括:14.根据数据库事务中的数据插入指令分配待处理对象的行标识空间;15.或,根据数据库事务中的数据删除指令为待处理对象的标识添加删除状态。16.可选地,所述记录对所述待处理对象进行处理的操作,并将生成的记录通过日志保存的步骤,包括:17.对所述待处理对象进行处理的操作、待处理对象索引对应槽位以及所述待处理对象数据的标识进行记录,并将所述记录写入至重做日志中;18.获取所述待处理对象中加锁的数据,并将所述加锁的数据写入至回滚日志中。19.可选地,所述分配更新所述待处理对象的资源,根据所述日志对数据库进行更新的步骤,包括:20.分配更新所述待处理对象索引所需的资源;21.获取所述重做日志中的待处理对象数据的标识,对各所述待处理对象数据的标识执行置排他锁操作;22.根据所述重做日志中的操作记录进行数据库更新,在每个待处理对象更新完成时,释放所述待处理对象对应的排它锁。23.可选地,所述分配更新所述待处理对象索引所需的资源的步骤之后,还包括:24.若资源分配失败,基于所述回滚日志中保存的数据进行锁释放,以执行数据库事务的回滚操作。25.可选地,所述获取所述重做日志中的待处理对象数据的标识,对各所述待处理对象数据的标识执行置排他锁操作的步骤之后,还包括:26.若所述对各所述待处理对象数据的标识执行置排他锁操作不成功,基于所述回滚日志中保存的数据进行锁释放,以执行数据库事务的回滚操作。27.此外,为实现上述目的,本发明还提出了一种数据库事务处理装置,所述装置包括:28.对象处理模块,用于根据数据库事务中的数据处理指令对待处理对象进行处理,并对所述待处理对象置保留锁,所述保留锁用于表征所述数据库事务将修改所述待处理对象;29.日志生成模块,用于记录对所述待处理对象进行处理的操作,并将生成的记录通过日志保存;30.数据更新模块,用于分配更新所述待处理对象的资源,根据所述日志对数据库进行更新,并在更新完成时释放排它锁。31.此外,为实现上述目的,本发明还提出一种数据库事务设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据库事务处理程序,所述数据库事务处理程序配置为实现如上文所述的数据库事务处理方法的步骤。32.此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有数据库事务处理程序,所述数据库事务处理程序被处理器执行时实现如上文所述的数据库事务处理方法的步骤。33.本发明根据数据库事务中的数据处理指令对待处理对象进行处理,并对待处理对象置保留锁,保留锁用于表征数据库事务将修改待处理对象;记录对待处理对象进行处理的操作,并将生成的记录通过日志保存;分配更新待处理对象的资源,根据日志对数据库进行更新。由于本技术是通过保留锁对待处理对象的修改进行管理,并通过日志中的记录对数据库进行更新,解决了现有技术rc隔离级别通常采用多版本并发控制机制,但该方法在历史快照中查找及增删节点,在程序内部需要互斥,存在隐式锁,不能并发的问题,同时通过引入更多锁模式,缩短并发事务持有锁的时间,提升了事务处理的并发度。附图说明34.图1是本发明实施例方案涉及的硬件运行环境的数据库事务处理设备的结构示意图;35.图2为本发明数据库事务处理方法第一实施例的流程示意图;36.图3为本发明数据库事务处理方法第二实施例的流程示意图;37.图4为本发明数据库事务处理方法的一个应用场景流程示意图;38.图5为本发明数据库事务处理装置第一实施例的结构框图。39.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式40.应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。41.参照图1,图1为本发明实施例方案涉及的硬件运行环境的数据库事务处理设备结构示意图。42.如图1所示,该数据库事务处理设备可以包括:处理器1001,例如中央处理器(centralprocessingunit,cpu),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(wireless-fidelity,wi-fi)接口)。存储器1005可以是高速的随机存取存储器(randomaccessmemory,ram),也可以是稳定的非易失性存储器(non-volatilememory,nvm),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。43.本领域技术人员可以理解,图1中示出的结构并不构成对数据库事务处理设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。44.如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及数据库事务处理程序。45.在图1所示的数据库事务处理设备中,网络接口1004主要用于与网络服务器进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明数据库事务处理设备中的处理器1001、存储器1005可以设置在数据库事务处理设备中,所述数据库事务处理设备通过处理器1001调用存储器1005中存储的数据库事务处理程序,并执行本发明实施例提供的数据库事务处理方法。46.本发明实施例提供了一种数据库事务处理方法,参照图2,图2为本发明数据库事务处理方法第一实施例的流程示意图。47.本实施例中,所述数据库事务处理方法包括以下步骤:48.根据数据库事务中的数据处理指令对待处理对象进行处理,并对所述待处理对象置保留锁,所述保留锁用于表征所述数据库事务将修改所述待处理对象。49.需要说明的是,本实施例方法的执行主体可以是具有数据处理以及程序运行功能的终端设备,例如个人计算机、服务器等,也可以是具有相同或相似功能的电子设备,例如上述数据库事务处理设备。以下以数据库事务处理设备(以下简称处理设备)为例对本实施例及下述各实施例进行说明。50.可以理解的是,上述数据库事务是指将一组数据库操作(或称为数据库语句)视为一个不可分割的单元,要么全部执行成功,要么全部回滚,从而保证数据库的一致性和完整性。在数据库中,事务通过以下步骤进行管理:51.a1:开始事务(begin):标识事务的开始,开始记录事务中的操作;52.a2:执行操作:执行一系列的数据库操作语句,如插入、更新、删除、查询等;53.a3:提交事务(commit):将事务中的所有操作永久保存到数据库中;54.a4:回滚事务(rollback):取消事务中的所有操作,将数据库恢复到事务开始之前的状态。55.事务的使用可以确保数据库操作的一致性和完整性,特别是在多用户并发访问数据库时,可以避免数据冲突和数据不一致的问题。56.应当理解的是,上述数据处理指令即为数据库操作语句,如数据插入指令、数据更新指令、数据删除指令等。57.需要说明的是,上述待处理对象为数据库中存储的对象,可以是数据、表、行、列、视图、索引、触发器等。上述数据可以是数据库中实际存储的行、列对象中各字段的值。58.应当理解的是,锁是一种用于管理并发访问的机制,用于控制对数据库资源的访问权限。通过使用锁,可以确保多个事务在并发执行时不会产生数据不一致或冲突的问题。在本实施例中,锁可以包括:共享(share,s)锁、未决(pending,p)锁、保留(reserved,r)锁以及排它(exclusive,x)锁。59.需要解释的是,共享锁表示待处理对象可以被多个事务同时获得,用于进行数据库并发读取,在读取后共享锁会被立即释放;未决锁用于在事务获取排它锁进行修改时,若未获取到排他锁,则可以将该对象的锁置为未决锁,以使后续其它事务对此对象不能进行并发读,从而防止了写锁死,本事务可以对该对象加排它锁;排它锁用于表示正在对此对象进行写入,其它事务不可加任何锁。60.需要说明的是,锁的对象可以是行、hash索引中的槽位、表、t树或b树等索引中的节点、page等对象,本实施例对此不加以限制。61.特别地,在内存数据库中,上述锁的存储空间可以和实际数据存储空间连续匹配,例如行,在行的头部分配一块空间(即锁区),用于锁的保存和处理。62.在本实施例及下述各实施例中,上述待处理对象可以通过id进行标识,称为oid,oid中可以包括锁区空间,上述数据库中的对象可以包括待处理对象数据、待处理对象索引、待处理对象索引对应槽位等。通过oid即可直接访问到具体的对象,并得到对象上的加锁状态。一般而言oid是一个64位的无符合整数。63.需要解释的是,在数据库中的资源添加保留锁后,事务将在后续修改该对象。也即,所述保留锁用于表征所述数据库事务将修改所述待处理对象。在所述数据库事务对所述待处理对象加保留锁时,其他事务只能对其加共享锁进行读取,不能加其他锁。而本事务可以对所述待处理对象加未决锁或者排他锁。64.具体地,为了对待处理对象进行更为准确的处理,所述根据数据库事务中的数据处理指令对待处理对象进行处理,并对所述待处理对象置保留锁的步骤,包括:65.根据数据库事务中的数据处理指令对待处理对象的标识进行处理,并对待处理对象索引对应槽位添加保留锁。66.需要解释的是,索引是一种数据库内的数据结构,可以用于提高数据检索的速度和效率。索引通常由一个或多个键值以及对应的槽位组成,索引槽位用于指向数据实际在数据库中存储的位置,也即索引标识。67.可以理解的是,对待处理对象索引对应槽位添加保留锁,即后续对待处理对象索引对应槽位进行处理。68.具体地,所述根据数据库事务中的数据处理指令对待处理对象的标识进行处理的步骤,包括:69.根据数据库事务中的数据插入指令分配待处理对象的行标识空间;70.或,根据数据库事务中的数据删除指令为待处理对象的标识添加删除状态。71.需要说明的是,在数据处理指令为数据插入指令时,处理设备可以为对处理对象的行数据分配处理空间;在数据处理指令为数据删除指令时,处理设备可以将待处理对象的标识更改为删除状态,后续即可进行加保留锁操作。72.需要解释的是,在数据处理指令为数据更新指令时,直接执行后续加保留锁的操作。73.基于所述待处理对象索引对应槽位确定待处理对象数据的标识,并对所述待处理对象数据的标识添加保留锁。74.需要说明的是,上述待处理对象数据的标识即为待处理对象所对应的数据。75.在具体实现中,处理设备根据数据库事务中的数据处理指令对待处理对象进行处理,并对待处理对象置保留锁。76.记录对所述待处理对象进行处理的操作,并将生成的记录通过日志保存。77.可以理解的是,在数据库事务开始时即可记录事务中的操作,在执行数据库事务中的数据处理指令时,即可记录对数据库中对象进行处理的操作,并可以通过日志保存生成的记录。78.需要说明的是,在本实施例中,执行数据库事务中的数据处理指令不会对待处理对象数据以及待处理对象索引进行实际更新,而是通过日志记录操作,并对需要处理的对象加锁,在提交事务阶段,根据日志中的操作记录和锁,即可实现对待处理对象数据及待处理对象索引进行更新。79.具体地,述记录对所述待处理对象进行处理的操作,并将生成的记录通过日志保存的步骤,包括:80.对所述待处理对象进行处理的操作、待处理对象索引对应槽位以及所述待处理对象数据的标识进行记录,并将所述记录写入至重做日志中。81.需要说明的是,上述重做日志(redolog)是一种在数据库系统中用于保证数据持久性和事务一致性的机制。它记录了数据库系统中发生的所有修改操作,以便在系统崩溃或故障恢复时进行数据的回复和重播。在本实施例中,通过重做日志存储数据库事务中数据处理指令的操作类型(如删除、插入、更新、查询等)、待处理对象数据的标识、更新数据、待处理对象对应槽位等数据处理指令需要的数据。82.获取所述待处理对象中加锁的数据,并将所述加锁的数据写入至回滚日志中。83.需要说明的是,上述回滚日志(undolog)是一种数据库中用于实现事务的回滚操作和数据一致性的机制。它记录了对数据库进行的修改操作和反向操作,用于撤销已提交的事务或回滚未提交的事务所做的修改。在本实施例中,回滚日志中只保存加锁对象,在待处理对象对应槽位或待处理对象数据的标识加锁时,即可将加锁的oid记录至回滚日志。84.在数据库需要撤销已提交的事务或回滚未提交的事务所做的修改时,只需按照undolog中的保存的oid,进行锁释放,即可实现对数据库事务的回滚操作。85.在实际应用中,本技术undolog无需保存update、delete中实际数据,仅需保存加锁对象oid,减少undolog数据拷贝、节省内存、缩短事务处理时延,并引入更多的锁状态、缩短事务中各操作对锁占有时间,提升了事务处理并发度。86.在具体实现中,处理设备记录对处理对象进行处理的操作,并将生成的记录通过日志保存。87.步骤s300:分配更新所述待处理对象的资源,根据所述日志对数据库进行更新。88.需要说明的是,该步骤对应于数据库事务的提交事务步骤,在数据库事务中的数据处理指令处理完成时,可以分配更新对处理对象所需要的资源,并根据日志中的记录进行数据库更新。89.在具体实现中,处理设备分配更新待处理对象的资源,并根据日志对数据库进行更新。90.本实施例根据数据库事务中的数据处理指令对待处理对象进行处理,并对待处理对象置保留锁,保留锁用于表征数据库事务将修改待处理对象;记录对待处理对象进行处理的操作,并将生成的记录通过日志保存;分配更新待处理对象的资源,根据日志对数据库进行更新。由于本技术是通过保留锁对待处理对象的修改进行管理,并通过日志中的记录对数据库进行更新,解决了现有技术rc隔离级别通常采用多版本并发控制机制,但该方法在历史快照中查找及增删节点,在程序内部需要互斥,存在隐式锁,不能并发的问题,同时通过引入更多锁模式,缩短并发事务持有锁的时间,提升了事务处理的并发度。91.进一步地,在数据处理指令执行完成时,还可以执行数据查询指令。92.具体地,在使用索引进行数据查询时,即在待查询对象索引槽位上存在保留锁时,处理设备可以根据数据库事务中的数据查询指令查找到对查询对象,并对待查询对象索引槽位加共享锁,从而查找到待查询对象的标识,同时释放查询对象索引槽位上的s锁并对待查询对象数据加s锁,从而实现对待查询对象数据的读取,在读取完成时,释放待查询对象数据上的s锁。93.在待查询对象索引槽位上不存在锁时,可以对待查询对象索引槽位加共享锁,从而查找到待查询对象数据,同时释放查询对象索引槽位上的s锁并对待查询对象数据加s锁,从而实现对待查询对象数据的拷贝,在读取完成时,释放待查询对象数据上的s锁。94.基于上述本发明数据库事务处理方法的第一实施例,提出本发明数据库事务处理方法的第二实施例。95.如图3所示,图3为本发明数据库事务处理方法第二实施例的流程示意图。96.参照图3,为了对待处理对象进行更新,所述分配更新所述待处理对象的资源,根据所述日志对数据库进行更新锁的步骤,包括:97.步骤s310:分配更新所述待处理对象索引所需的资源。98.需要说明的是,在数据库事务中的数据处理指令与数据查询指令都执行完成时,处理设备可以分配所有待更新的资源(在内存数据库中为分配对象的存储空间)。99.需要解释的是,在资源分配失败时,处理设备可以执行回滚操作。具体地,在资源分配失败时,处理设备基于回滚日志中保存的加锁对象oid进行锁释放,以执行数据库事务的回滚操作。100.在具体实现中,处理设备分配更新待处理对象索引所需的资源。101.步骤s320:获取所述重做日志中的待处理对象数据的标识,对各所述待处理对象数据的标识执行置排他锁操作。102.需要说明的是,在对待处理对象数据的标识进行处理之前,需要获取排它锁(其中包括可能的未决锁)来保证对待处理对象数据的独占性访问。获取排他锁后,其他事务无法同时对数据进行读取或写入操作。103.需要解释的是,在置排他锁失败时,处理设备可以将该待处理对象锁置未决锁,以阻止后续事务对此对象进行并发读取,从而防止写锁死。104.进一步地,在置排它锁失败时,处理设备可以执行回滚操作,所述回滚操作的步骤如上文所述,本实施例对此不加以赘述。105.步骤s330:根据所述重做日志中的操作记录进行数据库更新,在每个待处理对象更新完成时,释放所述待处理对象对应的排它锁。106.需要说明的是,在置排他锁完成时,即可执行数据库更新操作。具体地,处理设备可以根据重做日志中的顺序执行数据更新、数据插入、数据删除等操作。所述数据更新可以包括待处理对象数据更新、待处理对象索引更新;所述数据插入可以包括待处理对象索引更新;所述数据删除可以包括待处理对象数据删除、待处理对象索引删除。107.需要解释的是,上述步骤s310、步骤s320的成功执行可以保证步骤s330中的每步对能成功执行,因此更新完任一项待处理对象时可立即释放x锁,最大程度保证并发。108.本实施例通过分配更新待处理对象索引所需的资源;获取重做日志中的待处理对象数据的标识,对各待处理对象数据的标识执行置排他锁操作;根据重做日志中的操作记录进行数据库更新,在每个待处理对象更新完成时,释放待处理对象对应的排它锁。由于是通过保留锁、排他锁以及重做日志进行数据库事务处理,减少undolog数据拷贝、节省内存、缩短事务处理时延,引入更多的锁状态、缩短事务中各操作对锁占有时间,提升了事务处理并发度。109.如图4所示,图4为本发明数据库事务处理方法的一个应用场景流程示意图。110.参照图4,开始事务时,处理设备可以读取事务中的数据处理指令,并置数据及可能更新的对象r锁(保留锁),并根据执行的操作写重做日志和回滚日志,该数据处理指令包括数据删除指令、数据更新指令、数据插入指令。111.进一步地,处理设备可以读取事务中的数据查询指令得到数据的标识,并将该数据的标识置共享锁,在拷贝完成时可以释放共享锁;若使用了索引,则对索引标识(即上文所述的索引对应槽位)至共享锁,得到数据标识后释放索引标识的共享锁,再将该数据的标识置共享锁,在拷贝完成时可以释放共享锁。112.进一步地,在事务提交时,处理设备分配更新索引所需的资源,如果更新不成功,则可以执行回滚操作。回滚操作即根据回滚日志中的标识,依次释放上面本事务的锁(包括保留锁/未决锁/共享锁)。113.进一步地,处理设备可以对重做日志中各标识加排他锁并进行更新索引和数据,在更新完成时释放排它锁。114.此外,本发明实施例还提出一种存储介质,所述存储介质上存储有数据库事务处理程序,所述数据库事务处理程序被处理器执行时实现如上文所述的数据库事务处理方法的步骤。115.基于本发明数据库事务处理方法的第一实施例,提出本发明数据库事务处理装置的第一实施例,参照图5,图5为本发明数据库事务处理装置第一实施例的结构框图。116.如图5所示,本发明实施例提出的数据库事务处理装置包括:117.对象处理模块501,用于根据数据库事务中的数据处理指令对待处理对象进行处理,并对所述待处理对象置保留锁,所述保留锁用于表征所述数据库事务将修改所述待处理对象;118.日志生成模块502,用于记录对所述待处理对象进行处理的操作,并将生成的记录通过日志保存;119.数据更新模块503,用于分配更新所述待处理对象的资源,根据所述日志对数据库进行更新,并在更新完成时释放排它锁。120.进一步地,所述对象处理模块501,还用于根据数据库事务中的数据处理指令对待处理对象的标识进行处理,并对待处理对象索引对应槽位添加保留锁;基于所述待处理对象索引对应槽位确定待处理对象数据的标识,并对所述待处理对象数据的标识添加保留锁。121.进一步地,所述对象处理模块501,还用于根据数据库事务中的数据插入指令分配待处理对象的行标识空间;或,根据数据库事务中的数据删除指令为待处理对象的标识添加删除状态。122.进一步地,所述日志生成模块502,还用于对所述待处理对象进行处理的操作、待处理对象索引对应槽位以及所述待处理对象数据的标识进行记录,并将所述记录写入至重做日志中;获取所述待处理对象中加锁的数据,并将所述加锁的数据写入至回滚日志中。123.本实施例根据数据库事务中的数据处理指令对待处理对象进行处理,并对待处理对象置保留锁,保留锁用于表征数据库事务将修改待处理对象;记录对待处理对象进行处理的操作,并将生成的记录通过日志保存;分配更新待处理对象的资源,根据日志对数据库进行更新。由于本技术是通过保留锁对待处理对象的修改进行管理,并通过日志中的记录对数据库进行更新,解决了现有技术rc隔离级别通常采用多版本并发控制机制,但该方法在历史快照中查找及增删节点,在程序内部需要互斥,存在隐式锁,不能并发的问题,同时通过引入更多锁模式,缩短并发事务持有锁的时间,提升了事务处理的并发度。124.参照如上文所述的本发明数据库事务处理装置的第一实施例,提出本发明数据库事务处理装置的第二实施例。125.在本实施例中,所述数据更新模块503,还用于分配更新所述待处理对象索引所需的资源;获取所述重做日志中的待处理对象数据的标识,对各所述待处理对象数据的标识执行置排他锁操作;根据所述重做日志中的操作记录进行数据库更新,在每个待处理对象更新完成时,释放所述待处理对象对应的排它锁。126.进一步地,所述数据更新模块503,还用于若资源分配失败,基于所述回滚日志中保存的数据进行锁释放,以执行数据库事务的回滚操作。127.进一步地,所述数据更新模块503,还用于若所述对各所述待处理对象数据的标识执行置排他锁操作不成功,基于所述回滚日志中保存的数据进行锁释放,以执行数据库事务的回滚操作。128.本实施例通过分配更新待处理对象索引所需的资源;获取重做日志中的待处理对象数据的标识,对各待处理对象数据的标识执行置排他锁操作;根据重做日志中的操作记录进行数据库更新,在每个待处理对象更新完成时,释放待处理对象对应的排它锁。由于是通过保留锁、排他锁以及重做日志进行数据库事务处理,减少undolog数据拷贝、节省内存、缩短事务处理时延,引入更多的锁状态、缩短事务中各操作对锁占有时间,提升了事务处理并发度。129.本发明数据库事务处理装置的其他实施例或具体实现方式可参照上述各方法实施例,此处不再赘述。130.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。131.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。132.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器/随机存取存储器、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。133.以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的
技术领域:
:,均同理包括在本发明的专利保护范围内。当前第1页12当前第1页12
技术特征:
1.一种数据库事务处理方法,其特征在于,所述方法包括:根据数据库事务中的数据处理指令对待处理对象进行处理,并对所述待处理对象置保留锁,所述保留锁用于表征所述数据库事务将修改所述待处理对象;记录对所述待处理对象进行处理的操作,并将生成的记录通过日志保存;分配更新所述待处理对象的资源,根据所述日志对数据库进行更新。2.如权利要求1所述的数据库事务处理方法,其特征在于,所述根据数据库事务中的数据处理指令对待处理对象进行处理,并对所述待处理对象置保留锁的步骤,包括:根据数据库事务中的数据处理指令对待处理对象的标识进行处理,并对待处理对象索引对应槽位添加保留锁;基于所述待处理对象索引对应槽位确定待处理对象数据的标识,并对所述待处理对象数据的标识添加保留锁。3.如权利要求2所述的数据库事务处理方法,其特征在于,所述数据处理指令包括数据插入指令、数据删除指令和数据更新指令;所述根据数据库事务中的数据处理指令对待处理对象的标识进行处理的步骤,包括:根据数据库事务中的数据插入指令分配待处理对象的行标识空间;或,根据数据库事务中的数据删除指令为待处理对象的标识添加删除状态。4.如权利要求3所述的数据库事务处理方法,其特征在于,所述记录对所述待处理对象进行处理的操作,并将生成的记录通过日志保存的步骤,包括:对所述待处理对象进行处理的操作、待处理对象索引对应槽位以及所述待处理对象数据的标识进行记录,并将所述记录写入至重做日志中;获取所述待处理对象中加锁的数据,并将所述加锁的数据写入至回滚日志中。5.如权利要求4所述的数据库事务处理方法,其特征在于,所述分配更新所述待处理对象的资源,根据所述日志对数据库进行更新的步骤,包括:分配更新所述待处理对象索引所需的资源;获取所述重做日志中的待处理对象数据的标识,对各所述待处理对象数据的标识执行置排他锁操作;根据所述重做日志中的操作记录进行数据库更新,在每个待处理对象更新完成时,释放所述待处理对象对应的排它锁。6.如权利要求5所述的数据库事务处理方法,其特征在于,所述分配更新所述待处理对象索引所需的资源的步骤之后,还包括:若资源分配失败,基于所述回滚日志中保存的数据进行锁释放,以执行数据库事务的回滚操作。7.如权利要求5所述的数据库事务处理方法,其特征在于,所述获取所述重做日志中的待处理对象数据的标识,对各所述待处理对象数据的标识执行置排他锁操作的步骤之后,还包括:若所述对各所述待处理对象数据的标识执行置排他锁操作不成功,基于所述回滚日志中保存的数据进行锁释放,以执行数据库事务的回滚操作。8.一种数据库事务处理装置,其特征在于,所述装置包括:对象处理模块,用于根据数据库事务中的数据处理指令对待处理对象进行处理,并对
所述待处理对象置保留锁,所述保留锁用于表征所述数据库事务将修改所述待处理对象;日志生成模块,用于记录对所述待处理对象进行处理的操作,并将生成的记录通过日志保存;数据更新模块,用于分配更新所述待处理对象的资源,根据所述日志对数据库进行更新,并在更新完成时释放排它锁。9.一种数据库事务处理设备,其特征在于,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据库事务处理程序,所述数据库事务处理程序配置为实现如权利要求1-7任一项所述的数据库事务处理方法的步骤。10.一种存储介质,其特征在于,所述存储介质上存储有数据库事务处理程序,所述数据库事务处理程序被处理器执行时实现如权利要求1-7任一项所述的数据库事务处理方法的步骤。
技术总结
本发明涉及数据库领域,公开一种数据库事务方法、装置、设备及存储介质。该方法根据数据库事务中的数据处理指令对待处理对象进行处理,对待处理对象置保留锁,保留锁用于表征数据库事务将修改待处理对象;记录对待处理对象进行处理的操作,并将生成的记录通过日志保存;分配更新待处理对象的资源,根据日志对数据库进行更新。由于本申请是通过保留锁对待处理对象的修改进行管理,并通过日志中的记录对数据库进行更新,解决了现有技术RC隔离级别通常采用多版本并发控制机制,但该方法在历史快照中查找及增删节点,在程序内部需要互斥,存在隐式锁,不能并发的问题,同时通过引入更多锁模式,缩短并发事务持有锁的时间,提升了事务处理的并发度。务处理的并发度。务处理的并发度。
技术研发人员:易其亮 蔡林山 胡龙 张晗
受保护的技术使用者:深圳市金证科技股份有限公司
技术研发日:2023.06.28
技术公布日:2023/10/11
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
