使用全局时间戳的分布式数据库事务的方法和装置与流程

未命名 08-07 阅读:231 评论:0

使用全局时间戳的分布式数据库事务的方法和装置
1.本技术要求于2020年11月30日递交的申请号为63/119,319、发明名称为“使用全局时间戳的分布式数据库事务的方法和装置(method and apparatus for distributed database transactions using global timestamping)”的美国临时专利申请和于2021年11月26日递交的申请号为17/535,832、发明名称为“使用全局时间戳的分布式数据库事务的方法和装置(method and apparatus for distributed database transactions using global timestamping)”的美国专利申请的优先权,其全部内容通过引用结合在本技术中。
技术领域
2.本发明涉及关系数据库管理系统(relational database management system,rdbms),尤其涉及用于在分布式rdbms中实现多版本并发控制(multi-version concurrency control,mvcc)的方法和装置。


背景技术:

3.在分布式rdbms中,发生电源故障、网络故障、其它错误和各种其它潜在事故时,需要数据库事务来保证数据有效性。原子性、一致性、隔离性和持久性(atomicity,consistency,isolation,and durability,acid)是一组保证数据有效性的属性。隔离每个事务是rdbms的基本要求,通常使用称为多版本并发控制(multi-version concurrency control,mvcc)的方法来实现。
4.在分布式rdbms中,事务通常在不同的集群、节点或线程上并发执行。隔离支持这样一种情况,即并发事务使数据库处于与事务按顺序执行时相同的状态。例如,读事务不应能够看到当前运行的事务的更改。相反,读事务应读取在当前运行的事务开始之前已经提交的事务的影响。当前运行的事务的列表称为“快照”。
5.因此,实现mvcc需要一种为每个事务分配时间戳的机制。在分布式rdbms中,唯一且单调递增的提交序列号(commit sequence number,csn)用作中央标准时间预言机(central time oracle)(逻辑全局时钟或逻辑时钟),以获取快照和提交排序。在分布式数据库系统中,事务可以在多个节点上处理,因此csn必须全局可用。csn用于唯一标识事务提交到数据库的时间点。
6.使用csn来实现mvcc要求:对于每个事务,节点必须通过专用的tcp/ip套接字连接查询中央全局事务管理器(global transaction manager,gtm)服务器,以便获取快照的全局csn的当前值,并且还要求递增全局值以指示事务提交。每个事务都需要向gtm服务器发出单独的请求。对于具有多个节点的大型集群(在每个节点上处理大量事务),网络带宽和gtm服务器cpu变得不堪重负,成为严重的性能瓶颈。
7.因此,需要一种用于节点获取当前值或csn或递增csn的方法和装置,以消除或减轻现有技术的一个或多个限制。
8.描述该背景信息的目的是揭示申请人认为可能与本发明相关的信息,并不旨在承认也不应解释为前述任何信息构成与本发明相对的现有技术。


技术实现要素:

9.本发明实施例的目的是提供一种用于从gtm服务器获取全局时间戳(例如,csn)的方法和装置。创建到所述gtm服务器的有限数量的长连接池。将多个请求(快照请求、提交请求或两者的组合)合并为对所述gtm服务器的一批请求。以有限的(例如,最小的)锁争用来处理来自所述gtm服务器的结果,并为每个请求分发结果来证明正确性,同时满足数据库请求。
10.根据本发明实施例,提供了一种用于在分布式数据库管理系统中实现多版本并发控制的方法。所述方法包括:从节点接收请求,其中所述请求将由全局事务管理器(global transaction manager,gtm)处理。后端在包括多个时隙的跟踪阵列中的时隙中注册所述请求。所述多个时隙中的每一个表示由所述gtm处理的多个请求中的一个。所述多个请求包括所述请求。所述后端获取所述时隙的锁,并扫描所述跟踪阵列的一段,以确定一批待处理请求,其中所述一批待处理请求包括所述请求。所述一批待处理请求用于产生聚合请求,所述聚合请求包括所述一批待处理请求中的提交请求总数的聚合增量。使用多个预先建立的连接中的一个,将所述聚合请求发送到所述gtm。接收来自所述gtm的响应,所述响应包括递增时间戳的当前值。然后,将所述递增时间戳分发给所述一批待处理请求中的所述多个请求;所述后端释放所述时隙的所述锁。
11.这可提供以下技术优势,即对于多个请求,在一个连接上仅将一个请求发送到所述gtm服务器,从而减少所需带宽,减少负载,并避免所述gtm服务器的性能下降。
12.在进一步的实施例中,所述时隙是通过递增所述跟踪阵列的计数器并使用所述递增的计数器的值作为所述跟踪阵列的所述时隙的索引来确定的。
13.在进一步的实施例中,所述多个时隙中的每一个包括状态。
14.在进一步的实施例中,所述值由所述后端用作所述请求的标识符。
15.在进一步的实施例中,将所述时间戳分发给所述一批待处理请求中的所述多个请求包括更新所述多个请求的状态,以指示所述多个请求已得到满足。
16.实施例还包括:响应于释放所述时隙的所述锁,唤醒已生成所述一批待处理请求中的所述多个请求中的部分或全部请求的多个后端。例如,在进一步的实施例中,响应于释放所述时隙的所述锁,唤醒所述一批待处理请求中的所述多个请求的多个后端。
17.根据本发明实施例,提供了一种用于在分布式数据库管理系统中实现多版本并发控制的系统。所述系统包括:多个计算设备,包括处理器和非瞬时性存储器,所述非瞬时性存储器用于存储指令,所述指令在由所述处理器执行时,使得所述系统从节点接收由全局事务管理器(global transaction manager,gtm)处理的请求。所述系统的后端在包括多个时隙的跟踪阵列中的时隙中注册所述请求,所述多个时隙中的每一个表示由所述gtm处理的多个请求中的一个,包括所述请求。所述后端获取所述时隙的锁,并扫描所述跟踪阵列的一段,以确定一批待处理请求,所述一批待处理请求包括所述请求。所述一批待处理请求用于产生聚合请求,所述聚合请求包括所述一批待处理请求中的提交请求总数的聚合增量。所述后端使用多个预先建立的连接中的一个,将所述聚合请求发送到所述gtm。所述后端执行以下操作:接收来自所述gtm的响应,所述响应包括递增时间戳的值;将所述递增时间戳分发给所述一批待处理请求中的所述多个请求。然后,所述后端可以释放所述时隙的所述锁。
18.上文结合本发明的各个方面描述了本发明实施例,这些实施例可以基于这些方面实现。本领域技术人员将理解,实施例可以结合描述这些实施例的方面来实现,但也可以与该方面的其它实施例一起实现。当实施例相互排斥或彼此不兼容时,这对于本领域技术人员将是显而易见的。一些实施例可以结合一个方面进行描述,但也可以适用于其它方面,这对本领域技术人员是显而易见的。
附图说明
19.结合附图,通过以下具体实施方式,本发明的其它特征和优点将变得显而易见,其中:
20.图1示出了实施例提供的rdbms的架构图;
21.图2示出了实施例提供的可以在rdbms内使用的电子设备的架构图;
22.图3示出了实施例提供的rdbms的视图;
23.图4示出了实施例提供的rdbms的操作的视图;
24.图5示出了实施例提供的数据库命令的示例;
25.图6示出了实施例提供的数据库命令和跟踪阵列的交互;
26.图7示出了实施例提供的连接锁定的操作;
27.图8示出了实施例提供的用于注册请求的方法;
28.图9示出了实施例提供的锁获取和批确定的方法;
29.图10示出了实施例提供的与gtm服务器交互的方法和其它方法;
30.图11示出了实施例提供的本文描述的方法的概述。
31.需要说明的是,在整个附图中,相同的特征由相同的附图标记标识。
具体实施方式
32.本文中使用的术语“约”应当理解为包括相对于标称值的变化,例如,相对于标称值的+/-10%的变化。应当理解,无论是否具体提及,本文提供的给定值总是包括这种变化。
33.本发明实施例的目的是提供一种用于从gtm服务器获取全局时间戳(例如,csn或其它序列号)的方法和装置。创建到所述gtm服务器的有限数量的长连接池。将多个请求(例如,快照请求、提交请求或两者的组合)合并为对所述gtm服务器的一批请求。以有限的(例如,最小的)锁争用来处理来自所述gtm服务器的结果,并为每个请求分发结果来促进正确性,同时满足数据库请求。所述一批请求中包括的请求将完成并产生与每个请求分别向所述gtm服务器发送其时间戳请求相同的结果。在利用批处理的实施例中,一个后端可以收集和处理来自多个后端的所有未完成请求。一些后端可能请求当前时间戳csn,而另一些后端可能请求递增全局时间戳。一个后端用于通过对所述gtm服务器的一次调用来满足多个(例如,所有)请求。
34.本文中使用的分布式dbms是具有在多个节点(例如,计算机)上发生事务的dbms或rdbms。事务是指可能影响数据库内容的工作单元。事务可以是只读事务或更改数据库状态的更新(提交)事务。在一个事务中对所述数据库的所有更改通常都需要是原子的,即所述事务完全完成或根本不完成。原子性、一致性、隔离性和持久性(atomicity,consistency,isolation,and durability,acid)是dbms的四个属性。具体地,隔离是指这样一种属性,即
并发事务使数据库处于与事务按顺序执行时相同的状态。例如,读事务不应能够看到由于当前运行的事务而引起的更改。所述读事务应读取在该事务开始之前已经提交的事务的影响。当前运行事务的列表称为快照。多版本并发控制(multi-version concurrency control,mvcc)是实现隔离的常见方法。在mvcc中,每个事务在开始时都会被分配一个时间戳或序列号。当数据项由事务更新时,将创建所述数据项的新副本。每个事务将看到在其时间戳之前提交的数据项的版本。因此,每个事务会根据其时间戳看到所述数据库的“快照”。时间戳的一种形式是逻辑全局时钟,所述逻辑全局时钟提供了一种机制,所述机制使用集中获取的计数器作为对分布式dbms中的事务进行排序的逻辑方式。所述计数器充当时间戳,并且在实施例中可以称为“中央标准时间预言机”。在实施例中,逻辑全局时钟也可以由提交序列号(commit sequence number,csn)实现。
35.本文中使用的“后端”是指postgresql进程等数据库进程中的线程,所述线程处理满足用户查询所需的工作,包括来自该查询的所有事务。所述后端可以在本领域已知的物理或虚拟计算环境上运行。替代地,所述后端可以指实现此类线程的计算装置的一部分。
36.图1示出了实施例提供的rdbms的架构图100。计算机节点104被布置成通过网络106连接的集群106。根据所述rdbms的要求,例如所需的性能、延迟、地理位置等,任意数量的集群102可以配置有任意数量的节点104。网络106还可以配置有足够的带宽和延迟,以允许所述集群中的所述节点根据要求执行。集群102通过网络108与服务器110通信,以实现数据库请求、快照、数据库部分或整个数据库数据集的通信。
37.图2示出了本发明的不同实施例提供的计算设备的示意图,所述计算设备可以包括在节点104中,并且可以执行本文中显式地或隐式地描述的上述方法和特征的任意或全部操作。如图所示,所述设备包括处理器302(例如,中央处理器(central processing unit,cpu)或专用处理器(例如,图形处理单元(graphics processing unit,gpu)或其它此类处理器单元)、存储器304、非瞬时性大容量存储设备308和网络接口310,它们都通过总线进行通信耦合。具体,网络接口310提供到包括网络106、108或其它有线或无线网络的网络320的连接。根据某些实施例,可以利用所述元件中的任意或所有元件,或者仅利用所述元件的子集。
38.可选地,可以包括视频适配器306以在显示器312上提供用户界面,或者可以提供i/o接口314以提供到键盘、鼠标或各种usb设备等用户或操作员可以使用的元件的接口。进一步地,计算设备104可以包含某些元件的多个实例,例如多个处理器、存储器或收发器。此外,硬件设备的元件可以在没有所述总线的情况下直接耦合至其它元件。附加地或替代地,除处理器和存储器之外,还可以采用集成电路等其它电子器件来执行所需的逻辑操作。
39.存储器304可以包括任意类型的非瞬时性存储器,例如,静态随机存取存储器(static random access memory,sram)、动态随机存取存储器(dynamic random access memory,dram)、同步dram(synchronous dram,sdram)、只读存储器(read-only memory,rom)或其任意组合等。大容量存储元件308可以包括任意类型的非瞬时性存储设备,例如,固态驱动器、硬盘驱动器、磁盘驱动器、光盘驱动器、usb盘或用于存储数据和机器可执行程序代码的任何计算机程序产品。根据某些实施例,存储器304或大容量存储设备308可以在其上记录可由处理器302执行的语句和指令,用于执行上述任意方法操作。
40.图3示出了实施例提供的rdbms的视图400。集群102包括多个节点104。节点104可
以是物理或虚拟计算设备。后端包括在节点104上运行的线程。当系统初始化、配置或重新配置时,创建和初始化连接池402,每个连接池具有到中央gtm服务器110的有限数量的连接404。连接404的创建和初始化可以由postmaster线程执行。连接池402可以创建一次,作为集群102中每个节点104的初始化的一部分,并且可以在节点稍后被重新配置的情况下进行调整。池402中的连接404的数量有限,以便限制从所述集群到gtm服务器110的同时连接的最大数量,从而便于满足所述系统的性能要求。
41.每个池化连接具有时隙的跟踪阵列406,每个时隙410表示对所述中央gtm的请求。每个跟踪阵列406具有全局原子计数器412,全局原子计数器412用于在跟踪阵列406中的唯一时隙中注册请求。此外,每个池化连接与上下文感知锁408相关联。
42.每个时隙410具有用于跟踪所述时隙的请求的相关联状态414。状态的示例包括“未请求(not_requested)”、“待处理(pending)”、“已满足(satisfied)”。首次初始化时,时隙410的状态414设置为not_requested。每个时隙410还具有指示分配给每个时隙的请求类型的相关联请求类型416。请求类型包括对于提交请求的“commit_type”以及对于快照请求的“snapshot_type”。
43.图4示出了实施例提供的dbms的操作500的视图。响应于最终用户查询,请求源于节点104a和节点104b等节点。请求可以包括至少两种类型:一种请求类型是快照请求,用于从所述gtm服务器获取全局时间戳(csn)的当前值;另一种请求类型是提交请求,用于获取所述全局时间戳的所述当前值,然后在服务器上原子递增所述当前值。数量可能较大的请求生成到节点502的传输106a和106b,以便获取时间戳值或递增并获取递增时间戳。
44.每个后端504通过网络106在跟踪阵列406中注册用于其连接的请求,方法是递增全局原子计数器412并使用所述值作为跟踪阵列406的索引以获取唯一时隙410。一旦请求在时隙410中注册,该时隙的状态414可以从not_requested更改为pending。后端节点504可以使用全局原子计数器412值或可用于标识其自身请求的其它唯一值。注册所述请求可以在不持有锁408的情况下完成。
45.然后,后端将尝试以独占模式获取用于连接404的锁408。排它锁有助于为施加所述排它锁的事务独占地保留所述连接,只要所述事务持有所述锁。如果没有其它共享锁或排它锁已经施加在所述连接404上,则可以施加排它锁。因此,一个连接404只能施加一个排它锁,并且一旦施加,就不能对连接404施加其它锁。成功获取所述锁的所述后端将负责处理已在所述跟踪阵列中注册的一批待处理请求。因此,已获取用于连接404的所述锁的拥有后端(可以称为“请求者后端”)将在使用网络108到中央gtm服务器110的单个通信往返(请求和相关联响应)中协作地满足多个待处理请求以及其自身请求。
46.图5示出了实施例提供的数据库命令602的示例600,其中后端节点104(例如,协调器(cn)或数据节点(dn))或请求者后端504使用单个命令来获取快照并使用gtm服务器110递增csn。请求“get_snapshot_and_increment_csn_gtmlite()”是一项原子操作,其将从gtm服务器110返回所述csn的当前值的时间戳,然后在gtm服务器110处递增所述csn。
47.图6示出了实施例提供的数据库命令和跟踪阵列406的交互700。为了确定一批的大小,请求者后端502将检查跟踪阵列406中的多个时隙410,所述多个时隙是跟踪阵列406的总大小的子集,并包括所述请求者后端自身的时隙。扫描段的大小可以通过各种方式确定,例如通过经验来优化系统的性能。扫描段702通常是整个跟踪阵列406(例如,环形缓冲
区)的相对较小的子集。一起处理的每批请求可以包含不同类型的请求,包括快照请求和提交请求。因此,协议允许在对gtm服务器110的一个请求704中一起处理包含不同类型请求的异构批。处理一批请求时,计算该批请求中包含的提交请求的总数,并将其作为全局时间戳的聚合增量(例如,作为请求704的参数)发送到gtm服务器110。在gtm服务器110处接收到消息时,将全局时间戳的当前值返回到请求者后端502,并将全局时间戳递增在gtm服务器110处接收到的增量值。
48.图7示出了实施例提供的连接锁定的操作800。各种后端504已发出请求,所述请求可以是快照请求、提交请求或这两种类型的组合,或者需要来自gtm服务器110的全局时间戳的其它请求。所述请求存储在跟踪阵列406中。请求者后端502还已发出需要来自gtm服务器110的时间戳的请求,例如快照请求或提交请求。此外,后端502已获取用于到gtm服务器110的连接108的锁。后端502创建一批请求(包括其自身请求和后端504的请求),并在单个命令中将所述一批请求发送到gtm服务器110。
49.接收到来自gtm服务器110的响应时,回到请求者后端节点502,使用全局时间戳的当前值来满足所述一批请求中的所有快照请求。快照请求接收从gtm服务器110返回的时间戳值。提交请求中的每一个接收唯一的时间戳值。例如,第一提交请求可以接收从gtm服务器110返回的所述时间戳,与提供给所述快照请求的时间戳相同。第二提交请求将接收所述返回的时间戳,所述返回的时间戳递增1。第三提交请求将接收所述返回的时间戳,所述返回的时间戳递增2。该过程可以继续,直到每个提交请求已接收到唯一的顺序时间戳。
50.处理完成后,与扫描段中的请求对应的条目的所有状态都会更改为“satisfied”状态,以向等待后端504指示其请求已准备好使用。随后,请求者后端502释放上下文感知锁408。响应于释放锁408,唤醒其请求得到满足的等待后端504,以允许所述等待后端获取其时间戳。所述等待后端可以处理其请求。在实施例中,上下文感知锁408将唤醒并通知后端504其时间戳请求已经得到满足,并且时间戳可以从阵列406读取。在实施例中,上下文感知锁408将所述锁授予等待所述锁的另一后端。
51.图8示出了实施例提供的用于注册请求的方法900。在步骤902中,节点的后端502接收用户查询,并生成快照请求或提交请求等请求。在步骤904中,后端502从连接池402中为其节点104选择连接404。在步骤906中,后端502递增所选连接404的跟踪阵列406的计数器412。在步骤908中,后端502使用计数器412的新增量值作为跟踪阵列406的索引,以选择时隙410。在步骤910中,所选时隙410的状态从“not_requested”更改为“pending”。在步骤912中,后端502接收唯一的计数器或标识符,以在所述请求完成之前标识所述请求。
52.图9示出了实施例提供的锁获取和批确定的方法1000。在步骤1002中,后端502尝试获取所选连接404的上下文感知锁408。在步骤1004中,后端502获取锁408以完成锁获取。如果请求者后端502无法获取锁408,则它被迫等待直到获取所述锁,这可以由所述锁本身在被另一后端释放时完成。在一些情况下,当后端等待接收锁408时,其请求可以由另一后端发起的另一批处理请求来满足。
53.在步骤1006中,后端502确定用于一起批处理其它请求的扫描段。在步骤1008中,后端502确定所述请求和构成所述一批请求的时隙。在步骤1010中,后端502确定需要递增全局时间戳的请求(例如,提交请求)的数量。所述请求的数量用于确定聚合增量值。在步骤1012中,后端502构建要发送到gtm服务器的请求,所述请求包括时间戳csn的聚合增量值。
54.图10示出了实施例提供的与gtm服务器交互的方法1100和其它方法。在步骤1102中,gtm服务器110从后端502接收请求,并将当前时间戳返回到后端502。然后,gtm服务器110将全局时间戳csn递增聚合增量值。在步骤1104中,后端502接收当前时间戳值。在步骤1106中,后端502使用所述时间戳值更新跟踪阵列,以允许一批请求中的其它请求的后端504访问它们。在步骤1108中,所述当前时间戳用于满足所述一批请求中的所有待处理快照请求。每个待处理提交请求接收顺序时间戳值。第一提交请求接收所述当前时间戳。第二提交请求接收所述当前时间戳,所述当前时间戳递增1。每个后续提交请求接收为每个提交请求递增的唯一顺序时间戳。在步骤1110中,扫描段中的所有时隙的状态都会更改为“satisfied”。在步骤1112中,后端502释放锁。在步骤1114中,响应于释放所述锁,唤醒其它请求的后端,以允许所述后端获取其时间戳并服务于其请求。后端完成对其请求的服务,其状态可能会更改为not_requested。
55.实施例的示例包括运行分布式数据库实例的集群102中的一个节点104。启动所述数据库实例启动时,使用五个池化连接404来初始化连接池402。每个池化连接404建立到gtm服务器110的tcp/ip套接字连接,池化连接404添加到就绪连接池402中。在该示例中,池化连接404的编号从0到4。
56.添加到就绪连接池402中时,每个池化连接的跟踪阵列406被初始化,使得时隙的跟踪阵列被清除,每个时隙阵列的全局计数器412被初始化为0。在该示例中,每个跟踪阵列406具有1024个时隙,编号从0到1023。
57.所述跟踪阵列中的每个时隙410将包含一个请求条目,所述请求条目包括请求状态414和请求类型416。每个请求条目可以是提交请求或快照请求。请求类型字段416可以是commit_type或snapshot_type。每个请求状态字段414可以是not_requested、pending或satisfied。当每个池化连接的跟踪阵列406被初始化时,所有请求状态都被初始化为not_requested。
58.后端502对应于处理单个用户查询的线程,生成事务提交请求。系统代码已将后端随机分配给连接,以促进将后端平均分配给可用的池化连接。后端502将在其分配的池化连接的跟踪阵列406中注册其请求,在该示例中,连接编号为3。
59.后端502读取连接3的全局计数器412,其值为70。后端502递增全局计数器,使其读取71。通过这种方式,下一个后端将读取71。后端502使用70作为跟踪阵列406的索引,并发现索引70的时隙具有not_requested状态。后端502将时隙70的请求状态414更改为pending,并将其请求类型416设置为commit_type,从而匹配响应于所述用户查询生成的所述提交请求。
60.然后,后端502将尝试获取用于连接3的排它锁并成功。后端502现在是连接3的唯一用户,同时持有所述锁。后端502现在称为“请求者”后端。
61.后端502将检查跟踪阵列406中保持后端502的请求的时隙编号70附近的10个时隙。选择时隙70之前的两个时隙、时隙70(其自身时隙)和时隙70之后的7个时隙作为扫描段702。因此,后端502检查时隙68、69、70、71、72、73、74、75、76、77。这些时隙构成扫描段702。
62.后端504确定,除了时隙70具有commit_type待处理请求之外,时隙74具有另一commit_type待处理请求,时隙75具有snapshot_type待处理请求。后端504计算聚合增量为2,因为所述扫描段中的commit_type请求总数为2。
63.后端502使用工作连接3来使用聚合增量值2向gtm服务器110调用get_snapshot_and_incrments_csn_gtmlite()api。
64.gtm服务器110处的gsn具有当前值1001。所述gtm服务器将所述gsn递增2至1003,并且1001被返回到后端502。
65.后端502使用其从gtm服务器110获取的值1001来填充时隙70(第一提交请求)和75(快照请求)中的待处理请求,使得70和75中的两个请求都将具有时间戳序列号1001。后端502将时隙74处的第二提交请求中的序列号设置为1002,使得不同的提交请求接收不同的时间戳序列号。然后,后端502将时隙70、74和75处的请求的所有状态字段设置为satisfied。实施例支持这样一种操作,其中请求中序列号的最终状态与每个后端获得其自身对gtm的请求并自行处理所述请求完全相同。
66.后端502现在已完成批事务,并将释放锁408。然后,后端502将使用为其自身提交事务获取的序列号值1001。
67.上下文感知锁408现在通知下一个后端其拥有所述锁。锁408还将通知后端阵列406中具有已经得到满足的请求。所述请求是时隙74和75处的后端拥有请求。这些后端现在可以使用所述时隙中的序列号,即使它们不会获取所述锁。
68.图11示出了实施例提供的本文描述的图8、图9和图10所示方法的概述。在操作1202中,从节点接收请求,其中所述请求将由全局事务管理器(global transaction manager,gtm)110处理。在操作1204中,后端504在包括多个时隙410的跟踪阵列406中的时隙中410注册所述请求。所述多个时隙410中的每一个表示由gtm 110处理的多个请求中的一个。所述多个请求包括所述操作1202的初始请求。在操作1206中,所述后端获取所述时隙的锁;在操作1208中,所述后端扫描跟踪阵列406的一段,以确定一批待处理请求,其中所述一批待处理请求包括所述请求。在操作1210中,所述一批待处理请求用于产生聚合请求,所述聚合请求包括所述一批待处理请求中的提交请求总数的聚合增量。在操作1212中,使用多个预先建立的连接中的一个,将所述聚合请求发送到gtm 110。接收来自gtm 110的响应,所述响应包括递增时间戳的当前值。在操作1214中,然后,将所述递增时间戳分发给所述一批待处理请求中的所述多个请求;所述后端释放所述时隙的所述锁。在进一步的实施例中,在操作1214中,响应于释放所述时隙的所述锁,所述操作还包括唤醒所述一批待处理请求中的所述多个请求的多个后端。
69.应当理解,尽管为了说明的目的,本文已经描述了该技术的具体实施例,但在不脱离该技术的范围的情况下,可以进行各种修改。因此,说明书和附图仅被视为所附权利要求书限定的对本发明的说明,并且预期覆盖落入本发明的范围内的任何和所有修改、变化、组合或等同物。具体地,提供用于存储机器可读取的信号的计算机程序产品或程序元件,或磁线、磁带、磁盘或光线、光带或光盘等程序存储或存储设备,在本技术的范围内,用于根据本技术的方法控制计算机的操作和/或根据本技术的系统构造其部分或全部组件。
70.与本文描述的方法关联的动作可以在计算机程序产品中实现为编码指令。换句话说,计算机程序产品是一种计算机可读介质,当计算机程序产品被加载到存储器中并在无线通信设备的微处理器上执行时,软件代码被记录在该介质上以执行方法。
71.进一步地,可以在任何适当的计算设备上,并且根据从c++、java等任何编程语言生成的一个或多个程序单元、模块或对象或所述一个或多个程序单元、模块或对象的一部
分来执行所述方法的每个操作。另外,每个操作或实现每个所述操作的文件或对象等可以由专用硬件或为此目的设计的电路模块执行。
72.通过上述实施例的描述,本发明可以仅通过使用硬件实现,也可以通过使用软件和必要的通用硬件平台实现。基于这种理解,本发明的技术方案可以通过软件产品的形式体现。软件产品可以存储在非易失性或非瞬时性存储介质中,非易失性或非瞬时性存储介质可以是光盘只读存储器(compact disk read-only memory,cd-rom)、usb闪存盘或可移动硬盘。软件产品包括许多指令,这些指令使得计算机设备(个人计算机、服务器或网络设备)能够执行本发明的实施例中提供的方法。例如,此类执行可以对应于本文中描述的逻辑操作的模拟。软件产品可以附加地或替代地包括多个指令,这些指令使得计算机设备能够执行用于配置或编程根据本发明实施例所述的数字逻辑装置的操作。
73.虽然已经参考本发明的特定特征和实施例描述了本发明,但是显然可以在不脱离本发明的情况下对本发明进行各种修改和组合。因此,说明书和附图仅被视为所附权利要求书限定的对本发明的说明,并且预期覆盖落入本发明的范围内的任何和所有修改、变化、组合或等同物。

技术特征:
1.一种方法,其特征在于,包括:在包括多个时隙的跟踪阵列中的一个时隙中注册请求,所述多个时隙中的每一个表示包括所述请求的多个请求中的一个;获取所述时隙的锁;确定一批待处理请求,所述一批待处理请求包括所述请求,所述一批待处理请求用于产生聚合请求,所述聚合请求包括所述一批待处理请求中的提交请求总数的聚合增量;将所述聚合请求发送到全局事务管理器(global transaction manager,gtm);接收来自所述gtm的响应,所述响应包括递增时间戳的值;为所述一批待处理请求中的所述多个请求分发所述递增时间戳;释放所述时隙的所述锁。2.根据权利要求1所述的方法,其特征在于,所述时隙是通过递增所述跟踪阵列的计数器并使用所述递增的计数器的值作为所述跟踪阵列的所述时隙的索引来确定的。3.根据权利要求1或2所述的方法,其特征在于,所述多个时隙中的每一个包括状态。4.根据权利要求2所述的方法,其特征在于,所述值用作所述请求的标识符。5.根据权利要求1至4中任一项所述的方法,其特征在于,分发包括更新所述多个请求的状态,以指示所述多个请求已得到满足。6.根据权利要求1至5中任一项所述的方法,其特征在于,还包括:响应于释放所述时隙的所述锁,唤醒已生成所述一批待处理请求中的所述多个请求中的部分或全部请求的多个后端。7.根据权利要求1至6中任一项所述的方法,其特征在于,还包括:扫描所述跟踪阵列的一段,以确定所述一批待处理请求。8.一种用于实现多版本并发控制的系统,其特征在于,所述系统包括一个或多个处理器和非瞬时性存储器,所述非瞬时性存储器用于存储指令,所述指令在由所述一个或多个处理器执行时,使得所述系统执行以下操作:在包括多个时隙的跟踪阵列中的一个时隙中注册请求,所述多个时隙中的每一个表示包括所述请求的多个请求中的一个;获取所述时隙的锁;确定一批待处理请求,所述一批待处理请求包括所述请求,所述一批待处理请求用于产生聚合请求,所述聚合请求包括所述一批待处理请求中的提交请求总数的聚合增量;将所述聚合请求发送到全局事务管理器(global transaction manager,gtm);接收来自所述gtm的响应,所述响应包括递增时间戳的值,所述递增时间戳已递增所述聚合增量;为所述一批待处理请求中的所述多个请求分发所述递增时间戳;释放所述时隙的所述锁。9.根据权利要求8所述的系统,其特征在于,所述时隙是通过递增所述跟踪阵列的计数器并使用所述递增的计数器的值作为所述跟踪阵列的所述时隙的索引来确定的。10.根据权利要求8或9所述的系统,其特征在于,所述多个时隙中的每一个包括状态。11.根据权利要求9所述的系统,其特征在于,所述值用作所述请求的标识符。12.根据权利要求8至11中任一项所述的系统,其特征在于,分发包括更新所述多个请
求的状态,以指示所述多个请求已得到满足。13.根据权利要求8至12中任一项所述的系统,其特征在于,响应于释放所述时隙的所述锁,所述处理器使得所述系统唤醒所述一批待处理请求中的所述多个请求的多个后端。14.一种存储计算机指令的非瞬时性计算机可读介质,其特征在于,所述计算机指令在由一个或多个处理器执行时,使得装置执行以下操作:在包括多个时隙的跟踪阵列中的一个时隙中注册请求,所述多个时隙中的每一个表示包括所述请求的多个请求中的一个;获取所述时隙的锁;确定一批待处理请求,所述一批待处理请求包括所述请求,所述一批待处理请求用于产生聚合请求,所述聚合请求包括所述一批待处理请求中的提交请求总数的聚合增量;将所述聚合请求发送到全局事务管理器(global transaction manager,gtm);接收来自所述gtm的响应,所述响应包括递增时间戳的值,所述递增时间戳已递增所述聚合增量;为所述一批待处理请求中的所述多个请求分发所述递增时间戳;释放所述时隙的所述锁。15.根据权利要求14所述的非瞬时性计算机可读介质,其特征在于,所述时隙是通过递增所述跟踪阵列的计数器并使用所述递增的计数器的值作为所述跟踪阵列的所述时隙的索引来确定的。16.根据权利要求14或15所述的非瞬时性计算机可读介质,其特征在于,所述多个时隙中的每一个包括状态。17.根据权利要求15所述的非瞬时性计算机可读介质,其特征在于,所述值用作所述请求的标识符。18.根据权利要求14至17中任一项所述的非瞬时性计算机可读介质,其特征在于,分发包括更新所述多个请求的状态,以指示所述多个请求已得到满足。19.根据权利要求14至18中任一项所述的非瞬时性计算机可读介质,其特征在于,响应于释放所述时隙的所述锁,所述处理器使得所述系统唤醒所述一批待处理请求中的所述多个请求的多个后端。20.根据权利要求14至19中任一项所述的非瞬时性计算机可读介质,其特征在于,还使得装置扫描所述跟踪阵列的一段,以确定所述一批待处理请求。

技术总结
一种用于在数据库系统中实现并发控制的方法和系统,包括:从节点接收由GTM处理的请求。在跟踪阵列中的时隙中注册所述请求,其中所述时隙中的每一个表示由所述GTM处理的所述请求中的一个。获取时隙;扫描所述跟踪阵列的一段,以确定一批待处理请求。所述一批待处理请求用于产生聚合请求,所述聚合请求包括所述一批待处理请求中的提交请求总数的聚合增量。使用多个预先建立的连接中的一个,将所述聚合请求发送到所述GTM。接收来自所述GTM的响应,所述响应包括递增时间戳的当前值。将所述递增时间戳分发给所述一批待处理请求中的所述请求;释放所述锁。释放所述锁。释放所述锁。


技术研发人员:罗南
受保护的技术使用者:华为技术有限公司
技术研发日:2021.11.29
技术公布日:2023/8/5
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐