CN117667869B - 一种全局事务并发控制方法、装置及设备 - Google Patents
一种全局事务并发控制方法、装置及设备 Download PDFInfo
- Publication number
- CN117667869B CN117667869B CN202311660564.3A CN202311660564A CN117667869B CN 117667869 B CN117667869 B CN 117667869B CN 202311660564 A CN202311660564 A CN 202311660564A CN 117667869 B CN117667869 B CN 117667869B
- Authority
- CN
- China
- Prior art keywords
- transaction
- database
- global
- node
- state
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 186
- 238000003860 storage Methods 0.000 claims description 26
- 238000004590 computer program Methods 0.000 claims description 11
- 239000000758 substrate Substances 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 4
- 239000000463 material Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000005096 rolling process Methods 0.000 description 2
- 239000002253 acid Substances 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种全局事务并发控制方法、装置及设备,所述方法包括获取每个数据库节点的事务进程,当数据库节点上有提交或回滚的事务时,利用事务状态广播进程将事务对应的事务号广播至集群;确定存在事务冲突时,利用全局事务冲突管理进程对事务冲突进行解除处理;利用事务状态接收进程接收事务状态广播进程发送的消息,将其他数据库节点上事务状态广播进程广播的内容记录到本节点的全局运行事务状态列表,以使得本节点数据库事务通过内存获知集群全局的数据库事务状态。本发明每个数据库节点都能够仅通过访问本机内存就能够获知全局一致的事务状态,达成了在集群内高效的、一致的数据库事务并发控制。
Description
技术领域
本发明属于关系型数据库技术领域,具体涉及一种全局事务并发控制方法、装置及设备。
背景技术
在共享存储数据库集群架构中,每个数据库节点都支持读写操作全部数据,并且任意节点上的读写操作都符合全局的ACID特性。由于本架构在数据库集群共享一份数据文件,这区别于常见的分布式数据库架构和一写多读数据库架构,尤其涉及到集群的事务控制系统。在共享存储数据库集群架构中,各个数据库节点操作共享的数据,也需要一种全局一致的集群数据库事务控制方法,协调各个节点对于共享数据的并发事务操作。传统单机数据库使用内存进行事务并发控制,不能应用于数据库集群下多个数据库节点对于共享数据的事务并发控制要求;由于分布式事务控制的基础是各个分布式节点都有各自独立的存储数据而非共用一份共享数据,所以分布式事务控制方法也不能应用于共享存储数据库集群架构中。
综上所述,如何对共享存储集群数据库系统进行事务并发控制是目前亟需解决的技术问题。
发明内容
有鉴于此,本发明的目的在于克服现有技术的不足,提供一种全局事务并发控制方法、装置及设备,以解决现有技术中共享存储数据库集群架构无法进行事务并发控制的问题。
为实现以上目的,本发明采用如下技术方案:一种全局事务并发控制方法,应用于共享存储集群数据库,所述共享存储集群数据库包括多个数据库节点;每个数据库节点包括事务状态广播进程、事务状态接收进程、全局运行事务状态列表和全局事务冲突管理进程;
所述方法包括:
获取每个数据库节点的事务进程,当数据库节点上有提交或回滚的事务时,利用所述事务状态广播进程将所述事务对应的事务号广播至集群;
确定是否存在事务冲突,并确定存在事务冲突时,利用全局事务冲突管理进程对所述事务冲突进行解除处理;
在每个数据库节点事务提交或回滚后,记录相应事务号至本节点配属的全局运行事务状态列表中,以及利用所述事务状态接收进程接收所述事务状态广播进程发送的消息,将其他数据库节点上所述事务状态广播进程广播的内容记录到本节点的全局运行事务状态列表,以使得本节点数据库事务通过内存获知集群全局的数据库事务状态。
进一步的,所述确定是否存在事务冲突,包括:
当每个数据库节点申请事务号时,事务执行进程在本数据库节点的所述全局事务冲突管理进程注册锁队列;其中,所述锁队列的标识为该事务的事务号,锁队列的内容为空;
当第一事务锁定或修改了数据行并且事务正在执行过程中,如果第二事务需要锁定或修改第一事务正在锁定或修改的数据行时,所述第二事务被阻塞,直至所述第一事务结束。
进一步的,所述存在事务冲突时,对所述事务冲突进行解除处理,包括:
判断所述第一事务与所述第二事务是否属于同一数据库节点的场景;
如果是,则第二事务向第一事务的锁队列添加第二事务的事务ID号,并进行锁定,每个数据库事务在事务结束时,所述全局事务冲突管理进程创建的事务锁队列将被销毁,如果本事务被其他事务等待,则向其他事务发送信号令其等待结束,解除数据库写冲突锁定;
否则,第二事务在所述全局事务冲突管理进程中新建锁队列,锁队列ID为第一事务的事务号,并且将所述第二事务的事务号添加入锁队列,记录第二事务正在等待第一事务A的结束。
进一步的,所述判断所述第一事务与所述第二事务是否属于同一数据库节点的场景,包括:
第二事务扫描本数据库节点的所述全局事务冲突管理进程中的锁队列,如果扫描到锁队列标识为第一事务的锁队列,则属于第一事务与第二事务所述数据库进程位于同一个数据库节点的场景;否则,属于第一事务与第二事务所述数据库进程位于不同的数据库节点的场景。
进一步的,所述全局运行事务状态列表用于记录已完结的事务状态;
根据已完结的事务状态确定正在运行中的事务状态。
进一步的,所述全局运行事务状态列表包括:
连续已完结的最大事务号;
大于所述连续已完结的最大事务号的事务列表。
进一步的,每个节点上的数据库事务提交或回滚之后,在本节点配属的所述全局运行事务状态列表中记录本事务号;其他数据库节点上的数据库事务提交或回滚之后发送广播消息,由各个节点的所述事务状态接收进程进行处理。
进一步的,在两个发生冲突的事务所属数据库进程位于不同的数据库节点的场景中,被阻塞的事务一方面新建锁队列,另一方面在所述全局运行事务状态列表中对正在等待的事务进行等待标记,以表示目标事务正在被本机等待,使得所述事务状态接收进程能够判断出是否有本节点事务被该事务阻塞,以及在有本节点事务被该事务阻塞的情况下,扫描锁队列并解除本节点相关事务的锁定等待状态。
本申请实施例提供一种全局事务并发控制装置,应用于共享存储集群数据库,所述共享存储集群数据库包括多个数据库节点;每个数据库节点包括事务状态广播进程、事务状态接收进程、全局运行事务状态列表和全局事务冲突管理进程;
所述装置包括:
获取模块,用于获取每个数据库节点的事务进程,当数据库节点上有提交或回滚的事务时,利用所述事务状态广播进程将所述事务对应的事务号广播至集群;
处理模块,用于确定是否存在事务冲突,并确定存在事务冲突时,利用全局事务冲突管理进程对所述事务冲突进行解除处理;
控制模块,用于在每个数据库节点事务提交或回滚后,记录相应事务号至本节点配属的全局运行事务状态列表中,以及利用所述事务状态接收进程接收所述事务状态广播进程发送的消息,将其他数据库节点上所述事务状态广播进程广播的内容记录到本节点的全局运行事务状态列表,以使得本节点数据库事务通过内存获知集群全局的数据库事务状态。
本申请实施例提供一种计算机设备,包括:存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行上述任一项全局事务并发控制方法的步骤。
本发明采用以上技术方案,能够达到的有益效果:
本申请提供一种全局事务并发控制方法、装置及设备,本申请能够管理共享存储集群数据库的不同数据库节点之间的数据库事务并发冲突,在共享存储集群数据库的每个数据库节点上开辟事务状态广播进程和事务状态接收进程,负责同步与接收各个节点上已完结的数据库事务;在每个数据库节点上建立全局实时运行中事务状态列表,由本节点上的数据库事务进程/线程和事务状态接收进程进行维护,使得每个数据库节点上的数据库事务仅通过内存就能访问全局的事务状态;每个数据库节点上还维护了全局事务冲突管理进程,其管理节点内事务冲突和节点间事务冲突。通过本申请提供的方法,每个数据库节点都能够仅通过访问本机内存就能够获知全局一致的事务状态,达成了在集群内高效的、一致的数据库事务并发控制。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明中全局事务并发控制方法的步骤示意图;
图2是本发明中发送事务冲突时的处理流程图;
图3是本发明中事务状态接收进程处理流程图;
图4是本发明中根据实施例给出的全局事务并发控制装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案进行详细的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本发明所保护的范围。
下面结合附图介绍本申请实施例中提供的一个具体的全局事务并发控制方法、装置及设备。
如图1所示,本实施例提供一种全局事务并发控制方法,应用于共享存储集群数据库,所述共享存储集群数据库包括多个数据库节点;每个数据库节点包括事务状态广播进程、事务状态接收进程、全局运行事务状态列表和全局事务冲突管理进程;所述方法包括:
S101,获取每个数据库节点的事务进程,当数据库节点上有提交或回滚的事务时,利用所述事务状态广播进程将所述事务对应的事务号广播至集群;
所述事务状态广播进程,用于当本机数据库节点上有提交或回滚的事务时,将该事务号广播至集群。本机数据库节点上执行数据库业务的后台进程/线程在提交或回滚之后,通过进程间通信通道将该事务的事务号和提交/回滚状态通知给所述事务状态广播进程,由所述事务状态广播进程进行处理。
S102,确定是否存在事务冲突,并确定存在事务冲突时,利用全局事务冲突管理进程对所述事务冲突进行解除处理;
S103,在每个数据库节点事务提交或回滚后,记录相应事务号至本节点配属的全局运行事务状态列表中,以及利用所述事务状态接收进程接收所述事务状态广播进程发送的消息,将其他数据库节点上所述事务状态广播进程广播的内容记录到本节点的全局运行事务状态列表,以使得本节点数据库事务通过内存获知集群全局的数据库事务状态。
本申请提供的全局事务并发控制方法的工作原理为,本申请提供的全局事务并发控制方法应用于共享存储集群数据库,本申请获取每个数据库节点的事务进程,当数据库节点上有提交或回滚的事务时,利用事务状态广播进程将事务对应的事务号广播至集群;确定是否存在事务冲突,并确定存在事务冲突时,利用全局事务冲突管理进程对事务冲突进行解除处理;在每个数据库节点事务提交或回滚后,记录相应事务号至本节点配属的全局运行事务状态列表中,以及利用事务状态接收进程接收事务状态广播进程发送的消息,将其他数据库节点上事务状态广播进程广播的内容记录到本节点的全局运行事务状态列表,以使得本节点数据库事务通过内存获知集群全局的数据库事务状态。
一些实施例中,所述确定是否存在事务冲突,包括:
当每个数据库节点申请事务号时,事务执行进程在本数据库节点的所述全局事务冲突管理进程注册锁队列;其中,所述锁队列的标识为该事务的事务号,锁队列的内容为空;
当第一事务锁定或修改了数据行并且事务正在执行过程中,如果第二事务需要锁定或修改第一事务正在锁定或修改的数据行时,所述第二事务被阻塞,直至所述第一事务结束。
一些实施例中,所述存在事务冲突时,对所述事务冲突进行解除处理,包括:
判断所述第一事务与所述第二事务是否属于同一数据库节点的场景;
其中,所述判断所述第一事务与所述第二事务是否属于同一数据库节点的场景,包括:
第二事务扫描本数据库节点的所述全局事务冲突管理进程中的锁队列,如果扫描到锁队列标识为第一事务的锁队列,则属于第一事务与第二事务所述数据库进程位于同一个数据库节点的场景;否则,属于第一事务与第二事务所述数据库进程位于不同的数据库节点的场景。
如果是,则第二事务向第一事务的锁队列添加第二事务的事务ID号,并进行锁定,每个数据库事务在事务结束时,所述全局事务冲突管理进程创建的事务锁队列将被销毁,如果本事务被其他事务等待,则向其他事务发送信号令其等待结束,解除数据库写冲突锁定;
否则,第二事务在所述全局事务冲突管理进程中新建锁队列,锁队列ID为第一事务的事务号,并且将所述第二事务的事务号添加入锁队列,记录第二事务正在等待第一事务的结束。
具体的,当每个数据库节点申请事务号时,事务执行进程/线程在本数据库节点的所述全局事务冲突管理进程注册锁队列,锁队列的标识为该事务的事务号,此时锁队列的内容为空。
如图2所示,为全局事务冲突管理进程的流程,表明一个事务(暂记为事务1)在执行数据行锁定或修改时,数据行正在被另一个事务(暂记为事务2)修改。事务1在所述全局事务冲突管理进程中搜索锁队列ID为事务2事务号的锁队列。此时分为两种场景,能搜索到或搜索不到,分别对应了节点内事务并发冲突场景和节点间事务并发冲突场景。当搜索到时,执行节点内事务并发冲突场景的处理方式,事务1将事务1的事务号添加到事务2的锁队列中,随后等待直至事务冲突解除,此后当事务2事务结束并销毁自身锁队列时,能够解除事务1的事务等待锁定。否则执行节点间事务并发冲突场景的处理方式,事务1创建新的锁队列,锁队列ID为事务2的事务号,并将事务1的事务号添加进锁队列,随后等待直至事务冲突解除。此后当所述事务2结束并广播事务结束消息之后,事务1所在数据库节点的所述事务状态接收进程接收到该消息,将事务2的状态在所述全局运行事务状态列表中标为已完结,并解除事务1的等待挂起状态,令其继续执行数据库业务。
当一个第一事务A锁定或修改了数据行并且事务正在执行过程中,如果第二事务B需要锁定或修改第一事务A正在锁定或修改的数据行时,第二事务B需要被阻塞,直至第一事务A结束。此时分为两种情况:(1)第一事务A与第二事务B所属数据库进程/线程位于同一个数据库节点;(2)第一事务A与第二事务B所属数据库进程/线程位于不同的数据库节点。第二事务B扫描本数据库节点所述全局事务冲突管理进程中的锁队列,如果能够扫描到锁队列标识为第一事务A的锁队列,则属于第一事务A与第二事务B所述数据库进程/线程位于同一个数据库节点的场景;否则属于第一事务A与第二事务B所述数据库进程/线程位于不同的数据库节点的场景。
如果第一事务A与第二事务B所属数据库进程/线程位于同一个数据库节点,那么第二事务B向第一事务A的锁队列添加第二事务B的事务ID号,并进行挂起。相配套的,每个数据库事务在事务结束时,所述全局事务冲突管理进程创建的事务锁队列将被销毁,如果本事务被其他事务等待,则向这些事务发送信号令其等待结束,解除数据库写写冲突锁定。
如果第一事务A与第二事务B所属数据库进程/线程位于不同的数据库节点,那么第二事务B在所述全局事务冲突管理进程中新建锁队列,锁队列ID为第一事务A的事务号,并且将第二事务B的事务号添加入锁队列,记录了第二事务B正在等待第一事务A的结束。
一些实施例中,所述全局运行事务状态列表用于记录已完结的事务状态;
根据已完结的事务状态确定正在运行中的事务状态。
本申请中全局运行事务状态列表用于描述共享存储数据库集群架构中全局的数据库事务正在运行中状态,使得每个数据库节点上的并发事务仅通过检查本节点的内存信息,就可获知全局的数据库事务运行状态。
一些实施例中,所述全局运行事务状态列表包括:
连续已完结的最大事务号;
大于所述连续已完结的最大事务号的事务列表。
如图3所示,事务状态接收进程处理流程,首先事务状态接收进程接收到其他数据库节点广播的事务结束消息。然后事务状态接收进程将事务结束消息中记录的事务号添加进xip集合。述事务状态接收进程检查与更新Xmin步骤,如果接收到的事务号为Xmin+1,则更新Xmin=Xmin+1,并检查xips集合,将Xmin更新到最大的连续已完结的事务号,将相应的事务号在xips集合中删除。当在两个发生冲突的事务所属数据库进程/线程位于不同的数据库节点的场景中,被阻塞的事务一方面新建锁队列,另一方面可以在所述全局运行事务状态列表的xip集合中对正在等待的事务进行等待标记,声明目标事务正在被本机等待。当所述事务状态接收进程检查到等待标记时,执行扫描目标锁队列事务接触锁定,具体为事务状态接收进程处理节点间事务并发冲突步骤,所述事务状态接收进程在所述全局事务冲突管理进程中搜索ID为接收到的事务号的锁队列,对锁队列中全部正在等待的事务进程/线程发送信号令其解除锁定等待,可以继续执行,并销毁该锁队列。否则本次消息处理流程结束。
可以理解的是,所述全局运行事务状态列表记录了全部已完结的事务状态,取反即得到正在运行中状态。全局运行事务状态列表包含如下信息:(1)Xmin,意义为连续的全部已完结的最大事务号;(2)xips集合,意义为大于Xmin的已完结的事务列表。所述全局运行事务状态列表以如下规则进行操作。
每个节点上的数据库事务提交或回滚之后,在本节点配属的所述全局运行事务状态列表中记录本事务号;其他数据库节点上的数据库事务提交或回滚之后发送广播消息,由各个节点的所述事务状态接收进程进行处理。
如果提交或回滚的事务号不等于Xmin+1,则将事务号添加进xips集合中;否则更新Xmin=Xmin+1,并检查xips集合,将Xmin更新到最大的连续已完结的事务号,将相应的事务号在xips集合中删除。
本申请中事务状态接收进程,用于接收所述事务状态广播进程发送的消息,将其他数据库节点上所述事务状态广播进程广播的内容记录到本节点的所述全局运行事务状态列表,使得本节点数据库事务能够仅通过内存就能获知集群全局的数据库事务状态。如果所述全局事务冲突管理进程中包含锁队列ID为收到事务号的锁队列,则将锁队列销毁,并向锁队列中记录的等待事务发送信号令其等待结束,数据库写冲突锁定解除。
优选地,在两个发生冲突的事务所属数据库进程/线程位于不同的数据库节点的场景中,被阻塞的事务一方面新建锁队列,另一方面可以在所述全局运行事务状态列表的xip集合中对正在等待的事务进行等待标记,声明目标事务正在被本机等待,使得所述事务状态接收进程能够直接地判断出是否有本节点事务被该事务阻塞,以及在有本节点事务被该事务阻塞的情况下,才去扫描锁队列并解除本节点相关事务的挂起等待状态。
本申请实施例提供的一种共享存储集群数据库系统的全局事务并发控制方法,在该发明实施例中采用了一种全对称的事务控制模型,使得每个数据库节点仅通过访问本机内存就能够获知全局一致的事务状态,达成了在集群内高效的、一致的数据库事务控制,满足在多节点数据库集群架构中,对数据库业务中访问事务状态的极高频次操作。本发明实施例在各个节点的事务提交时,将自身的事务状态进行全局同步,每个节点由此获知了全局的事务正在运行中状态。
如图4所示,本申请实施例提供一种全局事务并发控制装置,应用于共享存储集群数据库,所述共享存储集群数据库包括多个数据库节点;每个数据库节点包括事务状态广播进程、事务状态接收进程、全局运行事务状态列表和全局事务冲突管理进程;
所述装置包括:
获取模块201,用于获取每个数据库节点的事务进程,当数据库节点上有提交或回滚的事务时,利用所述事务状态广播进程将所述事务对应的事务号广播至集群;
处理模块202,用于确定是否存在事务冲突,并确定存在事务冲突时,利用全局事务冲突管理进程对所述事务冲突进行解除处理;
控制模块203,用于在每个数据库节点事务提交或回滚后,记录相应事务号至本节点配属的全局运行事务状态列表中,以及利用所述事务状态接收进程接收所述事务状态广播进程发送的消息,将其他数据库节点上所述事务状态广播进程广播的内容记录到本节点的全局运行事务状态列表,以使得本节点数据库事务通过内存获知集群全局的数据库事务状态。
本申请提供的一种全局事务并发控制装置的工作原理为,获取模块201获取每个数据库节点的事务进程,当数据库节点上有提交或回滚的事务时,利用所述事务状态广播进程将所述事务对应的事务号广播至集群;处理模块202确定是否存在事务冲突,并确定存在事务冲突时,利用全局事务冲突管理进程对所述事务冲突进行解除处理;控制模块203在每个数据库节点事务提交或回滚后,记录相应事务号至本节点配属的全局运行事务状态列表中,以及利用所述事务状态接收进程接收所述事务状态广播进程发送的消息,将其他数据库节点上所述事务状态广播进程广播的内容记录到本节点的全局运行事务状态列表,以使得本节点数据库事务通过内存获知集群全局的数据库事务状态。
本申请实施例提供一种计算机设备,包括:存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行上述任一实施例所述全局事务并发控制方法的步骤。
综上所述,本发明提供一种全局事务并发控制方法、装置及设备,本申请使得每个数据库节点仅通过访问本机内存就能够获知全局一致的事务状态,达成了在集群内高效的、一致的数据库事务控制,满足在多节点数据库集群架构中,对数据库业务中访问事务状态的极高频次操作。本发明实施例在各个节点的事务提交时,将自身的事务状态进行全局同步,每个节点由此获知了全局的事务正在运行中状态。
在本说明书的描述中,参考术语“一个实施例”、“示例”、“具体示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
Claims (8)
1.一种全局事务并发控制方法,其特征在于,应用于共享存储集群数据库,所述共享存储集群数据库包括多个数据库节点;每个数据库节点包括事务状态广播进程、事务状态接收进程、全局运行事务状态列表和全局事务冲突管理进程;所述方法包括:
获取每个数据库节点的事务进程,当数据库节点上有提交或回滚的事务时,利用所述事务状态广播进程将所述事务对应的事务号广播至集群;
确定是否存在事务冲突,并确定存在事务冲突时,利用全局事务冲突管理进程对所述事务冲突进行解除处理;
在每个数据库节点事务提交或回滚后,记录相应事务号至本节点配属的全局运行事务状态列表中,以及利用所述事务状态接收进程接收所述事务状态广播进程发送的消息,将其他数据库节点上所述事务状态广播进程广播的内容记录到本节点的全局运行事务状态列表,以使得本节点数据库事务通过内存获知集群全局的数据库事务状态;
所述确定是否存在事务冲突,包括:
当每个数据库节点申请事务号时,事务执行进程在本数据库节点的所述全局事务冲突管理进程注册锁队列;其中,所述锁队列的标识为该事务的事务号,锁队列的内容为空;
当第一事务锁定或修改了数据行并且事务正在执行过程中,如果第二事务需要锁定或修改第一事务正在锁定或修改的数据行时,所述第二事务被阻塞,直至所述第一事务结束;
所述存在事务冲突时,对所述事务冲突进行解除处理,包括:
判断所述第一事务与所述第二事务是否属于同一数据库节点的场景;
如果是,则第二事务向第一事务的锁队列添加第二事务的事务ID号,并进行锁定,每个数据库事务在事务结束时,所述全局事务冲突管理进程创建的事务锁队列将被销毁,如果本事务被其他事务等待,则向其他事务发送信号令其等待结束,解除数据库写冲突锁定;
否则,第二事务在所述全局事务冲突管理进程中新建锁队列,锁队列ID为第一事务的事务号,并且将所述第二事务的事务号添加入锁队列,记录第二事务正在等待第一事务的结束。
2.根据权利要求1所述的方法,其特征在于,所述判断所述第一事务与所述第二事务是否属于同一数据库节点的场景,包括:
第二事务扫描本数据库节点的所述全局事务冲突管理进程中的锁队列,如果扫描到锁队列标识为第一事务的锁队列,则属于第一事务与第二事务所述数据库进程位于同一个数据库节点的场景;否则,属于第一事务与第二事务所述数据库进程位于不同的数据库节点的场景。
3.根据权利要求1所述的方法,其特征在于,
所述全局运行事务状态列表用于记录已完结的事务状态;
根据已完结的事务状态确定正在运行中的事务状态。
4.根据权利要求3所述的方法,其特征在于,所述全局运行事务状态列表包括:
连续已完结的最大事务号;
大于所述连续已完结的最大事务号的事务列表。
5.根据权利要求4所述的方法,其特征在于,
每个节点上的数据库事务提交或回滚之后,在本节点配属的所述全局运行事务状态列表中记录本事务号;其他数据库节点上的数据库事务提交或回滚之后发送广播消息,由各个节点的所述事务状态接收进程进行处理。
6.根据权利要求2所述的方法,其特征在于,
在两个发生冲突的事务所属数据库进程位于不同的数据库节点的场景中,被阻塞的事务一方面新建锁队列,另一方面在所述全局运行事务状态列表中对正在等待的事务进行等待标记,以表示目标事务正在被本机等待,使得所述事务状态接收进程能够判断出是否有本节点事务被该事务阻塞,以及在有本节点事务被该事务阻塞的情况下,扫描锁队列并解除本节点相关事务的锁定等待状态。
7.一种全局事务并发控制装置,其特征在于,应用于共享存储集群数据库,所述共享存储集群数据库包括多个数据库节点;每个数据库节点包括事务状态广播进程、事务状态接收进程、全局运行事务状态列表和全局事务冲突管理进程;
所述装置包括:
获取模块,用于获取每个数据库节点的事务进程,当数据库节点上有提交或回滚的事务时,利用所述事务状态广播进程将所述事务对应的事务号广播至集群;
处理模块,用于确定是否存在事务冲突,并确定存在事务冲突时,利用全局事务冲突管理进程对所述事务冲突进行解除处理;
控制模块,用于在每个数据库节点事务提交或回滚后,记录相应事务号至本节点配属的全局运行事务状态列表中,以及利用所述事务状态接收进程接收所述事务状态广播进程发送的消息,将其他数据库节点上所述事务状态广播进程广播的内容记录到本节点的全局运行事务状态列表,以使得本节点数据库事务通过内存获知集群全局的数据库事务状态;
所述确定是否存在事务冲突,包括:
当每个数据库节点申请事务号时,事务执行进程在本数据库节点的所述全局事务冲突管理进程注册锁队列;其中,所述锁队列的标识为该事务的事务号,锁队列的内容为空;
当第一事务锁定或修改了数据行并且事务正在执行过程中,如果第二事务需要锁定或修改第一事务正在锁定或修改的数据行时,所述第二事务被阻塞,直至所述第一事务结束;
所述存在事务冲突时,对所述事务冲突进行解除处理,包括:
判断所述第一事务与所述第二事务是否属于同一数据库节点的场景;
如果是,则第二事务向第一事务的锁队列添加第二事务的事务ID号,并进行锁定,每个数据库事务在事务结束时,所述全局事务冲突管理进程创建的事务锁队列将被销毁,如果本事务被其他事务等待,则向其他事务发送信号令其等待结束,解除数据库写冲突锁定;
否则,第二事务在所述全局事务冲突管理进程中新建锁队列,锁队列ID为第一事务的事务号,并且将所述第二事务的事务号添加入锁队列,记录第二事务正在等待第一事务的结束。
8.一种计算机设备,其特征在于,包括:存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至6中任一项所述全局事务并发控制方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311660564.3A CN117667869B (zh) | 2023-12-05 | 2023-12-05 | 一种全局事务并发控制方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311660564.3A CN117667869B (zh) | 2023-12-05 | 2023-12-05 | 一种全局事务并发控制方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117667869A CN117667869A (zh) | 2024-03-08 |
CN117667869B true CN117667869B (zh) | 2024-05-28 |
Family
ID=90086001
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311660564.3A Active CN117667869B (zh) | 2023-12-05 | 2023-12-05 | 一种全局事务并发控制方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117667869B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5241675A (en) * | 1992-04-09 | 1993-08-31 | Bell Communications Research, Inc. | Method for enforcing the serialization of global multidatabase transactions through committing only on consistent subtransaction serialization by the local database managers |
CN111723061A (zh) * | 2020-06-24 | 2020-09-29 | 北京松鼠山科技有限公司 | 一种数据库系统的并发控制方法和装置 |
-
2023
- 2023-12-05 CN CN202311660564.3A patent/CN117667869B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5241675A (en) * | 1992-04-09 | 1993-08-31 | Bell Communications Research, Inc. | Method for enforcing the serialization of global multidatabase transactions through committing only on consistent subtransaction serialization by the local database managers |
CN111723061A (zh) * | 2020-06-24 | 2020-09-29 | 北京松鼠山科技有限公司 | 一种数据库系统的并发控制方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN117667869A (zh) | 2024-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2378420B1 (en) | Ownership reassignment in a shared-nothing database system | |
US7376744B2 (en) | Using local locks for global synchronization in multi-node systems | |
EP4270211A2 (en) | High-throughput distributed transaction management for globally consistent sharded oltp system and method of implementing | |
US7447786B2 (en) | Efficient locking of shared data that is accessed for reads in a cluster database | |
AU2016292783B2 (en) | Method and architecture for providing database access control in a network with a distributed database system | |
US20160092488A1 (en) | Concurrency control in a shared storage architecture supporting on-page implicit locks | |
CN113396407A (zh) | 用于利用区块链技术扩充数据库应用的系统和方法 | |
JPH0679285B2 (ja) | トランザクション処理方法およびシステム | |
JPH04310148A (ja) | データの単位を高速度でアクセスする方法 | |
CN106648840B (zh) | 事务之间的时序确定方法和装置 | |
US20060224949A1 (en) | Exclusion control method and information processing apparatus | |
CN117667869B (zh) | 一种全局事务并发控制方法、装置及设备 | |
CN117608871A (zh) | 基于共享内存消息队列的金融行情订阅方法、设备及介质 | |
JPH04219844A (ja) | 高速媒体優先解放型排他方式 | |
US20010014932A1 (en) | Multi-processor system | |
JP3621433B2 (ja) | データベース排他制御方法 | |
CN111858503B (zh) | 一种基于日志解析同步的并行执行方法和数据同步系统 | |
CN113342507A (zh) | 一种分布式锁服务实现方法、装置及计算机设备 | |
US20090287735A1 (en) | Memory allocator for optimistic data access | |
CN116266101A (zh) | 一种分布式对象存储系统处理方法及装置、存储介质 | |
CN110909012B (zh) | 数据库对象的封锁方法、装置、设备和存储介质 | |
CN117271657A (zh) | 一种数据处理方法、数据库及系统 | |
JP2787107B2 (ja) | バッファ制御方式及び装置 | |
JPH07141243A (ja) | ロック管理装置 | |
CN117389696A (zh) | 一种应用于oltp内存数据库的并行恢复方法及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |