CN116547660A - 使用全局时间戳的分布式数据库事务的方法和装置 - Google Patents
使用全局时间戳的分布式数据库事务的方法和装置 Download PDFInfo
- Publication number
- CN116547660A CN116547660A CN202180078830.4A CN202180078830A CN116547660A CN 116547660 A CN116547660 A CN 116547660A CN 202180078830 A CN202180078830 A CN 202180078830A CN 116547660 A CN116547660 A CN 116547660A
- Authority
- CN
- China
- Prior art keywords
- requests
- request
- batch
- gtm
- backend
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 46
- 230000004044 response Effects 0.000 claims abstract description 25
- 230000015654 memory Effects 0.000 claims description 11
- 230000002618 waking effect Effects 0.000 claims description 3
- 230000002776 aggregation Effects 0.000 abstract description 2
- 238000004220 aggregation Methods 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 7
- 238000004590 computer program Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000002955 isolation Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- PMHURSZHKKJGBM-UHFFFAOYSA-N isoxaben Chemical compound O1N=C(C(C)(CC)CC)C=C1NC(=O)C1=C(OC)C=CC=C1OC PMHURSZHKKJGBM-UHFFFAOYSA-N 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
- G06F16/2386—Bulk updating operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种用于在数据库***中实现并发控制的方法和***,包括:从节点接收由GTM处理的请求。在跟踪阵列中的时隙中注册所述请求,其中所述时隙中的每一个表示由所述GTM处理的所述请求中的一个。获取时隙;扫描所述跟踪阵列的一段,以确定一批待处理请求。所述一批待处理请求用于产生聚合请求,所述聚合请求包括所述一批待处理请求中的提交请求总数的聚合增量。使用多个预先建立的连接中的一个,将所述聚合请求发送到所述GTM。接收来自所述GTM的响应,所述响应包括递增时间戳的当前值。将所述递增时间戳分发给所述一批待处理请求中的所述请求;释放所述锁。
Description
本申请要求于2020年11月30日递交的申请号为63/119,319、发明名称为“使用全局时间戳的分布式数据库事务的方法和装置(METHOD AND APPARATUS FOR DISTRIBUTEDDATABASE TRANSACTIONS USING GLOBAL TIMESTAMPING)”的美国临时专利申请和于2021年11月26日递交的申请号为17/535,832、发明名称为“使用全局时间戳的分布式数据库事务的方法和装置(METHOD AND APPARATUS FOR DISTRIBUTED DATABASE TRANSACTIONS USINGGLOBAL TIMESTAMPING)”的美国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本发明涉及关系数据库管理***(relational database management system,RDBMS),尤其涉及用于在分布式RDBMS中实现多版本并发控制(multi-versionconcurrency control,MVCC)的方法和装置。
背景技术
在分布式RDBMS中,发生电源故障、网络故障、其它错误和各种其它潜在事故时,需要数据库事务来保证数据有效性。原子性、一致性、隔离性和持久性(atomicity,consistency,isolation,and durability,ACID)是一组保证数据有效性的属性。隔离每个事务是RDBMS的基本要求,通常使用称为多版本并发控制(multi-version concurrencycontrol,MVCC)的方法来实现。
在分布式RDBMS中,事务通常在不同的集群、节点或线程上并发执行。隔离支持这样一种情况,即并发事务使数据库处于与事务按顺序执行时相同的状态。例如,读事务不应能够看到当前运行的事务的更改。相反,读事务应读取在当前运行的事务开始之前已经提交的事务的影响。当前运行的事务的列表称为“快照”。
因此,实现MVCC需要一种为每个事务分配时间戳的机制。在分布式RDBMS中,唯一且单调递增的提交序列号(Commit Sequence Number,CSN)用作中央标准时间预言机(central time oracle)(逻辑全局时钟或逻辑时钟),以获取快照和提交排序。在分布式数据库***中,事务可以在多个节点上处理,因此CSN必须全局可用。CSN用于唯一标识事务提交到数据库的时间点。
使用CSN来实现MVCC要求:对于每个事务,节点必须通过专用的TCP/IP套接字连接查询中央全局事务管理器(global transaction manager,GTM)服务器,以便获取快照的全局CSN的当前值,并且还要求递增全局值以指示事务提交。每个事务都需要向GTM服务器发出单独的请求。对于具有多个节点的大型集群(在每个节点上处理大量事务),网络带宽和GTM服务器CPU变得不堪重负,成为严重的性能瓶颈。
因此,需要一种用于节点获取当前值或CSN或递增CSN的方法和装置,以消除或减轻现有技术的一个或多个限制。
描述该背景信息的目的是揭示申请人认为可能与本发明相关的信息,并不旨在承认也不应解释为前述任何信息构成与本发明相对的现有技术。
发明内容
本发明实施例的目的是提供一种用于从GTM服务器获取全局时间戳(例如,CSN)的方法和装置。创建到所述GTM服务器的有限数量的长连接池。将多个请求(快照请求、提交请求或两者的组合)合并为对所述GTM服务器的一批请求。以有限的(例如,最小的)锁争用来处理来自所述GTM服务器的结果,并为每个请求分发结果来证明正确性,同时满足数据库请求。
根据本发明实施例,提供了一种用于在分布式数据库管理***中实现多版本并发控制的方法。所述方法包括:从节点接收请求,其中所述请求将由全局事务管理器(GlobalTransaction Manager,GTM)处理。后端在包括多个时隙的跟踪阵列中的时隙中注册所述请求。所述多个时隙中的每一个表示由所述GTM处理的多个请求中的一个。所述多个请求包括所述请求。所述后端获取所述时隙的锁,并扫描所述跟踪阵列的一段,以确定一批待处理请求,其中所述一批待处理请求包括所述请求。所述一批待处理请求用于产生聚合请求,所述聚合请求包括所述一批待处理请求中的提交请求总数的聚合增量。使用多个预先建立的连接中的一个,将所述聚合请求发送到所述GTM。接收来自所述GTM的响应,所述响应包括递增时间戳的当前值。然后,将所述递增时间戳分发给所述一批待处理请求中的所述多个请求;所述后端释放所述时隙的所述锁。
这可提供以下技术优势,即对于多个请求,在一个连接上仅将一个请求发送到所述GTM服务器,从而减少所需带宽,减少负载,并避免所述GTM服务器的性能下降。
在进一步的实施例中,所述时隙是通过递增所述跟踪阵列的计数器并使用所述递增的计数器的值作为所述跟踪阵列的所述时隙的索引来确定的。
在进一步的实施例中,所述多个时隙中的每一个包括状态。
在进一步的实施例中,所述值由所述后端用作所述请求的标识符。
在进一步的实施例中,将所述时间戳分发给所述一批待处理请求中的所述多个请求包括更新所述多个请求的状态,以指示所述多个请求已得到满足。
实施例还包括:响应于释放所述时隙的所述锁,唤醒已生成所述一批待处理请求中的所述多个请求中的部分或全部请求的多个后端。例如,在进一步的实施例中,响应于释放所述时隙的所述锁,唤醒所述一批待处理请求中的所述多个请求的多个后端。
根据本发明实施例,提供了一种用于在分布式数据库管理***中实现多版本并发控制的***。所述***包括:多个计算设备,包括处理器和非瞬时性存储器,所述非瞬时性存储器用于存储指令,所述指令在由所述处理器执行时,使得所述***从节点接收由全局事务管理器(Global Transaction Manager,GTM)处理的请求。所述***的后端在包括多个时隙的跟踪阵列中的时隙中注册所述请求,所述多个时隙中的每一个表示由所述GTM处理的多个请求中的一个,包括所述请求。所述后端获取所述时隙的锁,并扫描所述跟踪阵列的一段,以确定一批待处理请求,所述一批待处理请求包括所述请求。所述一批待处理请求用于产生聚合请求,所述聚合请求包括所述一批待处理请求中的提交请求总数的聚合增量。所述后端使用多个预先建立的连接中的一个,将所述聚合请求发送到所述GTM。所述后端执行以下操作:接收来自所述GTM的响应,所述响应包括递增时间戳的值;将所述递增时间戳分发给所述一批待处理请求中的所述多个请求。然后,所述后端可以释放所述时隙的所述锁。
上文结合本发明的各个方面描述了本发明实施例,这些实施例可以基于这些方面实现。本领域技术人员将理解,实施例可以结合描述这些实施例的方面来实现,但也可以与该方面的其它实施例一起实现。当实施例相互排斥或彼此不兼容时,这对于本领域技术人员将是显而易见的。一些实施例可以结合一个方面进行描述,但也可以适用于其它方面,这对本领域技术人员是显而易见的。
附图说明
结合附图,通过以下具体实施方式,本发明的其它特征和优点将变得显而易见,其中:
图1示出了实施例提供的RDBMS的架构图;
图2示出了实施例提供的可以在RDBMS内使用的电子设备的架构图;
图3示出了实施例提供的RDBMS的视图;
图4示出了实施例提供的RDBMS的操作的视图;
图5示出了实施例提供的数据库命令的示例;
图6示出了实施例提供的数据库命令和跟踪阵列的交互;
图7示出了实施例提供的连接锁定的操作;
图8示出了实施例提供的用于注册请求的方法;
图9示出了实施例提供的锁获取和批确定的方法;
图10示出了实施例提供的与GTM服务器交互的方法和其它方法;
图11示出了实施例提供的本文描述的方法的概述。
需要说明的是,在整个附图中,相同的特征由相同的附图标记标识。
具体实施方式
本文中使用的术语“约”应当理解为包括相对于标称值的变化,例如,相对于标称值的+/-10%的变化。应当理解,无论是否具体提及,本文提供的给定值总是包括这种变化。
本发明实施例的目的是提供一种用于从GTM服务器获取全局时间戳(例如,CSN或其它序列号)的方法和装置。创建到所述GTM服务器的有限数量的长连接池。将多个请求(例如,快照请求、提交请求或两者的组合)合并为对所述GTM服务器的一批请求。以有限的(例如,最小的)锁争用来处理来自所述GTM服务器的结果,并为每个请求分发结果来促进正确性,同时满足数据库请求。所述一批请求中包括的请求将完成并产生与每个请求分别向所述GTM服务器发送其时间戳请求相同的结果。在利用批处理的实施例中,一个后端可以收集和处理来自多个后端的所有未完成请求。一些后端可能请求当前时间戳CSN,而另一些后端可能请求递增全局时间戳。一个后端用于通过对所述GTM服务器的一次调用来满足多个(例如,所有)请求。
本文中使用的分布式DBMS是具有在多个节点(例如,计算机)上发生事务的DBMS或RDBMS。事务是指可能影响数据库内容的工作单元。事务可以是只读事务或更改数据库状态的更新(提交)事务。在一个事务中对所述数据库的所有更改通常都需要是原子的,即所述事务完全完成或根本不完成。原子性、一致性、隔离性和持久性(atomicity,consistency,isolation,and durability,ACID)是DBMS的四个属性。具体地,隔离是指这样一种属性,即并发事务使数据库处于与事务按顺序执行时相同的状态。例如,读事务不应能够看到由于当前运行的事务而引起的更改。所述读事务应读取在该事务开始之前已经提交的事务的影响。当前运行事务的列表称为快照。多版本并发控制(multi-version concurrencycontrol,MVCC)是实现隔离的常见方法。在MVCC中,每个事务在开始时都会被分配一个时间戳或序列号。当数据项由事务更新时,将创建所述数据项的新副本。每个事务将看到在其时间戳之前提交的数据项的版本。因此,每个事务会根据其时间戳看到所述数据库的“快照”。时间戳的一种形式是逻辑全局时钟,所述逻辑全局时钟提供了一种机制,所述机制使用集中获取的计数器作为对分布式DBMS中的事务进行排序的逻辑方式。所述计数器充当时间戳,并且在实施例中可以称为“中央标准时间预言机”。在实施例中,逻辑全局时钟也可以由提交序列号(commit sequence number,CSN)实现。
本文中使用的“后端”是指PostgreSQL进程等数据库进程中的线程,所述线程处理满足用户查询所需的工作,包括来自该查询的所有事务。所述后端可以在本领域已知的物理或虚拟计算环境上运行。替代地,所述后端可以指实现此类线程的计算装置的一部分。
图1示出了实施例提供的RDBMS的架构图100。计算机节点104被布置成通过网络106连接的集群106。根据所述RDBMS的要求,例如所需的性能、延迟、地理位置等,任意数量的集群102可以配置有任意数量的节点104。网络106还可以配置有足够的带宽和延迟,以允许所述集群中的所述节点根据要求执行。集群102通过网络108与服务器110通信,以实现数据库请求、快照、数据库部分或整个数据库数据集的通信。
图2示出了本发明的不同实施例提供的计算设备的示意图,所述计算设备可以包括在节点104中,并且可以执行本文中显式地或隐式地描述的上述方法和特征的任意或全部操作。如图所示,所述设备包括处理器302(例如,中央处理器(Central ProcessingUnit,CPU)或专用处理器(例如,图形处理单元(Graphics Processing Unit,GPU)或其它此类处理器单元)、存储器304、非瞬时性大容量存储设备308和网络接口310,它们都通过总线进行通信耦合。具体,网络接口310提供到包括网络106、108或其它有线或无线网络的网络320的连接。根据某些实施例,可以利用所述元件中的任意或所有元件,或者仅利用所述元件的子集。
可选地,可以包括视频适配器306以在显示器312上提供用户界面,或者可以提供I/O接口314以提供到键盘、鼠标或各种USB设备等用户或操作员可以使用的元件的接口。进一步地,计算设备104可以包含某些元件的多个实例,例如多个处理器、存储器或收发器。此外,硬件设备的元件可以在没有所述总线的情况下直接耦合至其它元件。附加地或替代地,除处理器和存储器之外,还可以采用集成电路等其它电子器件来执行所需的逻辑操作。
存储器304可以包括任意类型的非瞬时性存储器,例如,静态随机存取存储器(static random access memory,SRAM)、动态随机存取存储器(dynamic random accessmemory,DRAM)、同步DRAM(synchronous DRAM,SDRAM)、只读存储器(read-only memory,ROM)或其任意组合等。大容量存储元件308可以包括任意类型的非瞬时性存储设备,例如,固态驱动器、硬盘驱动器、磁盘驱动器、光盘驱动器、USB盘或用于存储数据和机器可执行程序代码的任何计算机程序产品。根据某些实施例,存储器304或大容量存储设备308可以在其上记录可由处理器302执行的语句和指令,用于执行上述任意方法操作。
图3示出了实施例提供的RDBMS的视图400。集群102包括多个节点104。节点104可以是物理或虚拟计算设备。后端包括在节点104上运行的线程。当***初始化、配置或重新配置时,创建和初始化连接池402,每个连接池具有到中央GTM服务器110的有限数量的连接404。连接404的创建和初始化可以由postmaster线程执行。连接池402可以创建一次,作为集群102中每个节点104的初始化的一部分,并且可以在节点稍后被重新配置的情况下进行调整。池402中的连接404的数量有限,以便限制从所述集群到GTM服务器110的同时连接的最大数量,从而便于满足所述***的性能要求。
每个池化连接具有时隙的跟踪阵列406,每个时隙410表示对所述中央GTM的请求。每个跟踪阵列406具有全局原子计数器412,全局原子计数器412用于在跟踪阵列406中的唯一时隙中注册请求。此外,每个池化连接与上下文感知锁408相关联。
每个时隙410具有用于跟踪所述时隙的请求的相关联状态414。状态的示例包括“未请求(NOT_REQUESTED)”、“待处理(PENDING)”、“已满足(SATISFIED)”。首次初始化时,时隙410的状态414设置为NOT_REQUESTED。每个时隙410还具有指示分配给每个时隙的请求类型的相关联请求类型416。请求类型包括对于提交请求的“COMMIT_TYPE”以及对于快照请求的“SNAPSHOT_TYPE”。
图4示出了实施例提供的DBMS的操作500的视图。响应于最终用户查询,请求源于节点104a和节点104b等节点。请求可以包括至少两种类型:一种请求类型是快照请求,用于从所述GTM服务器获取全局时间戳(CSN)的当前值;另一种请求类型是提交请求,用于获取所述全局时间戳的所述当前值,然后在服务器上原子递增所述当前值。数量可能较大的请求生成到节点502的传输106a和106b,以便获取时间戳值或递增并获取递增时间戳。
每个后端504通过网络106在跟踪阵列406中注册用于其连接的请求,方法是递增全局原子计数器412并使用所述值作为跟踪阵列406的索引以获取唯一时隙410。一旦请求在时隙410中注册,该时隙的状态414可以从NOT_REQUESTED更改为PENDING。后端节点504可以使用全局原子计数器412值或可用于标识其自身请求的其它唯一值。注册所述请求可以在不持有锁408的情况下完成。
然后,后端将尝试以独占模式获取用于连接404的锁408。排它锁有助于为施加所述排它锁的事务独占地保留所述连接,只要所述事务持有所述锁。如果没有其它共享锁或排它锁已经施加在所述连接404上,则可以施加排它锁。因此,一个连接404只能施加一个排它锁,并且一旦施加,就不能对连接404施加其它锁。成功获取所述锁的所述后端将负责处理已在所述跟踪阵列中注册的一批待处理请求。因此,已获取用于连接404的所述锁的拥有后端(可以称为“请求者后端”)将在使用网络108到中央GTM服务器110的单个通信往返(请求和相关联响应)中协作地满足多个待处理请求以及其自身请求。
图5示出了实施例提供的数据库命令602的示例600,其中后端节点104(例如,协调器(CN)或数据节点(DN))或请求者后端504使用单个命令来获取快照并使用GTM服务器110递增CSN。请求“get_snapshot_and_increment_csn_GTMLite()”是一项原子操作,其将从GTM服务器110返回所述CSN的当前值的时间戳,然后在GTM服务器110处递增所述CSN。
图6示出了实施例提供的数据库命令和跟踪阵列406的交互700。为了确定一批的大小,请求者后端502将检查跟踪阵列406中的多个时隙410,所述多个时隙是跟踪阵列406的总大小的子集,并包括所述请求者后端自身的时隙。扫描段的大小可以通过各种方式确定,例如通过经验来优化***的性能。扫描段702通常是整个跟踪阵列406(例如,环形缓冲区)的相对较小的子集。一起处理的每批请求可以包含不同类型的请求,包括快照请求和提交请求。因此,协议允许在对GTM服务器110的一个请求704中一起处理包含不同类型请求的异构批。处理一批请求时,计算该批请求中包含的提交请求的总数,并将其作为全局时间戳的聚合增量(例如,作为请求704的参数)发送到GTM服务器110。在GTM服务器110处接收到消息时,将全局时间戳的当前值返回到请求者后端502,并将全局时间戳递增在GTM服务器110处接收到的增量值。
图7示出了实施例提供的连接锁定的操作800。各种后端504已发出请求,所述请求可以是快照请求、提交请求或这两种类型的组合,或者需要来自GTM服务器110的全局时间戳的其它请求。所述请求存储在跟踪阵列406中。请求者后端502还已发出需要来自GTM服务器110的时间戳的请求,例如快照请求或提交请求。此外,后端502已获取用于到GTM服务器110的连接108的锁。后端502创建一批请求(包括其自身请求和后端504的请求),并在单个命令中将所述一批请求发送到GTM服务器110。
接收到来自GTM服务器110的响应时,回到请求者后端节点502,使用全局时间戳的当前值来满足所述一批请求中的所有快照请求。快照请求接收从GTM服务器110返回的时间戳值。提交请求中的每一个接收唯一的时间戳值。例如,第一提交请求可以接收从GTM服务器110返回的所述时间戳,与提供给所述快照请求的时间戳相同。第二提交请求将接收所述返回的时间戳,所述返回的时间戳递增1。第三提交请求将接收所述返回的时间戳,所述返回的时间戳递增2。该过程可以继续,直到每个提交请求已接收到唯一的顺序时间戳。
处理完成后,与扫描段中的请求对应的条目的所有状态都会更改为“SATISFIED”状态,以向等待后端504指示其请求已准备好使用。随后,请求者后端502释放上下文感知锁408。响应于释放锁408,唤醒其请求得到满足的等待后端504,以允许所述等待后端获取其时间戳。所述等待后端可以处理其请求。在实施例中,上下文感知锁408将唤醒并通知后端504其时间戳请求已经得到满足,并且时间戳可以从阵列406读取。在实施例中,上下文感知锁408将所述锁授予等待所述锁的另一后端。
图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接收唯一的计数器或标识符,以在所述请求完成之前标识所述请求。
图9示出了实施例提供的锁获取和批确定的方法1000。在步骤1002中,后端502尝试获取所选连接404的上下文感知锁408。在步骤1004中,后端502获取锁408以完成锁获取。如果请求者后端502无法获取锁408,则它被迫等待直到获取所述锁,这可以由所述锁本身在被另一后端释放时完成。在一些情况下,当后端等待接收锁408时,其请求可以由另一后端发起的另一批处理请求来满足。
在步骤1006中,后端502确定用于一起批处理其它请求的扫描段。在步骤1008中,后端502确定所述请求和构成所述一批请求的时隙。在步骤1010中,后端502确定需要递增全局时间戳的请求(例如,提交请求)的数量。所述请求的数量用于确定聚合增量值。在步骤1012中,后端502构建要发送到GTM服务器的请求,所述请求包括时间戳CSN的聚合增量值。
图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。
实施例的示例包括运行分布式数据库实例的集群102中的一个节点104。启动所述数据库实例启动时,使用五个池化连接404来初始化连接池402。每个池化连接404建立到GTM服务器110的TCP/IP套接字连接,池化连接404添加到就绪连接池402中。在该示例中,池化连接404的编号从0到4。
添加到就绪连接池402中时,每个池化连接的跟踪阵列406被初始化,使得时隙的跟踪阵列被清除,每个时隙阵列的全局计数器412被初始化为0。在该示例中,每个跟踪阵列406具有1024个时隙,编号从0到1023。
所述跟踪阵列中的每个时隙410将包含一个请求条目,所述请求条目包括请求状态414和请求类型416。每个请求条目可以是提交请求或快照请求。请求类型字段416可以是COMMIT_TYPE或SNAPSHOT_TYPE。每个请求状态字段414可以是NOT_REQUESTED、PENDING或SATISFIED。当每个池化连接的跟踪阵列406被初始化时,所有请求状态都被初始化为NOT_REQUESTED。
后端502对应于处理单个用户查询的线程,生成事务提交请求。***代码已将后端随机分配给连接,以促进将后端平均分配给可用的池化连接。后端502将在其分配的池化连接的跟踪阵列406中注册其请求,在该示例中,连接编号为3。
后端502读取连接3的全局计数器412,其值为70。后端502递增全局计数器,使其读取71。通过这种方式,下一个后端将读取71。后端502使用70作为跟踪阵列406的索引,并发现索引70的时隙具有NOT_REQUESTED状态。后端502将时隙70的请求状态414更改为PENDING,并将其请求类型416设置为COMMIT_TYPE,从而匹配响应于所述用户查询生成的所述提交请求。
然后,后端502将尝试获取用于连接3的排它锁并成功。后端502现在是连接3的唯一用户,同时持有所述锁。后端502现在称为“请求者”后端。
后端502将检查跟踪阵列406中保持后端502的请求的时隙编号70附近的10个时隙。选择时隙70之前的两个时隙、时隙70(其自身时隙)和时隙70之后的7个时隙作为扫描段702。因此,后端502检查时隙68、69、70、71、72、73、74、75、76、77。这些时隙构成扫描段702。
后端504确定,除了时隙70具有COMMIT_TYPE待处理请求之外,时隙74具有另一COMMIT_TYPE待处理请求,时隙75具有SNAPSHOT_TYPE待处理请求。后端504计算聚合增量为2,因为所述扫描段中的COMMIT_TYPE请求总数为2。
后端502使用工作连接3来使用聚合增量值2向GTM服务器110调用get_snapshot_and_incrments_csn_GTMLite()API。
GTM服务器110处的GSN具有当前值1001。所述GTM服务器将所述GSN递增2至1003,并且1001被返回到后端502。
后端502使用其从GTM服务器110获取的值1001来填充时隙70(第一提交请求)和75(快照请求)中的待处理请求,使得70和75中的两个请求都将具有时间戳序列号1001。后端502将时隙74处的第二提交请求中的序列号设置为1002,使得不同的提交请求接收不同的时间戳序列号。然后,后端502将时隙70、74和75处的请求的所有状态字段设置为SATISFIED。实施例支持这样一种操作,其中请求中序列号的最终状态与每个后端获得其自身对GTM的请求并自行处理所述请求完全相同。
后端502现在已完成批事务,并将释放锁408。然后,后端502将使用为其自身提交事务获取的序列号值1001。
上下文感知锁408现在通知下一个后端其拥有所述锁。锁408还将通知后端阵列406中具有已经得到满足的请求。所述请求是时隙74和75处的后端拥有请求。这些后端现在可以使用所述时隙中的序列号,即使它们不会获取所述锁。
图11示出了实施例提供的本文描述的图8、图9和图10所示方法的概述。在操作1202中,从节点接收请求,其中所述请求将由全局事务管理器(Global TransactionManager,GTM)110处理。在操作1204中,后端504在包括多个时隙410的跟踪阵列406中的时隙中410注册所述请求。所述多个时隙410中的每一个表示由GTM 110处理的多个请求中的一个。所述多个请求包括所述操作1202的初始请求。在操作1206中,所述后端获取所述时隙的锁;在操作1208中,所述后端扫描跟踪阵列406的一段,以确定一批待处理请求,其中所述一批待处理请求包括所述请求。在操作1210中,所述一批待处理请求用于产生聚合请求,所述聚合请求包括所述一批待处理请求中的提交请求总数的聚合增量。在操作1212中,使用多个预先建立的连接中的一个,将所述聚合请求发送到GTM 110。接收来自GTM 110的响应,所述响应包括递增时间戳的当前值。在操作1214中,然后,将所述递增时间戳分发给所述一批待处理请求中的所述多个请求;所述后端释放所述时隙的所述锁。在进一步的实施例中,在操作1214中,响应于释放所述时隙的所述锁,所述操作还包括唤醒所述一批待处理请求中的所述多个请求的多个后端。
应当理解,尽管为了说明的目的,本文已经描述了该技术的具体实施例,但在不脱离该技术的范围的情况下,可以进行各种修改。因此,说明书和附图仅被视为所附权利要求书限定的对本发明的说明,并且预期覆盖落入本发明的范围内的任何和所有修改、变化、组合或等同物。具体地,提供用于存储机器可读取的信号的计算机程序产品或程序元件,或磁线、磁带、磁盘或光线、光带或光盘等程序存储或存储设备,在本技术的范围内,用于根据本技术的方法控制计算机的操作和/或根据本技术的***构造其部分或全部组件。
与本文描述的方法关联的动作可以在计算机程序产品中实现为编码指令。换句话说,计算机程序产品是一种计算机可读介质,当计算机程序产品被加载到存储器中并在无线通信设备的微处理器上执行时,软件代码被记录在该介质上以执行方法。
进一步地,可以在任何适当的计算设备上,并且根据从C++、Java等任何编程语言生成的一个或多个程序单元、模块或对象或所述一个或多个程序单元、模块或对象的一部分来执行所述方法的每个操作。另外,每个操作或实现每个所述操作的文件或对象等可以由专用硬件或为此目的设计的电路模块执行。
通过上述实施例的描述,本发明可以仅通过使用硬件实现,也可以通过使用软件和必要的通用硬件平台实现。基于这种理解,本发明的技术方案可以通过软件产品的形式体现。软件产品可以存储在非易失性或非瞬时性存储介质中,非易失性或非瞬时性存储介质可以是光盘只读存储器(compact disk read-only memory,CD-ROM)、USB闪存盘或可移动硬盘。软件产品包括许多指令,这些指令使得计算机设备(个人计算机、服务器或网络设备)能够执行本发明的实施例中提供的方法。例如,此类执行可以对应于本文中描述的逻辑操作的模拟。软件产品可以附加地或替代地包括多个指令,这些指令使得计算机设备能够执行用于配置或编程根据本发明实施例所述的数字逻辑装置的操作。
虽然已经参考本发明的特定特征和实施例描述了本发明,但是显然可以在不脱离本发明的情况下对本发明进行各种修改和组合。因此,说明书和附图仅被视为所附权利要求书限定的对本发明的说明,并且预期覆盖落入本发明的范围内的任何和所有修改、变化、组合或等同物。
Claims (20)
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中任一项所述的非瞬时性计算机可读介质,其特征在于,还使得装置扫描所述跟踪阵列的一段,以确定所述一批待处理请求。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063119319P | 2020-11-30 | 2020-11-30 | |
US63/119,319 | 2020-11-30 | ||
US17/535,832 | 2021-11-26 | ||
US17/535,832 US20220171756A1 (en) | 2020-11-30 | 2021-11-26 | Method and apparatus for distributed database transactions using global timestamping |
PCT/CN2021/134137 WO2022111707A1 (en) | 2020-11-30 | 2021-11-29 | Method and apparatus for distributed database transactions using global timestamping |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116547660A true CN116547660A (zh) | 2023-08-04 |
Family
ID=81752476
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180078830.4A Pending CN116547660A (zh) | 2020-11-30 | 2021-11-29 | 使用全局时间戳的分布式数据库事务的方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220171756A1 (zh) |
EP (1) | EP4252118A4 (zh) |
CN (1) | CN116547660A (zh) |
WO (1) | WO2022111707A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11886433B2 (en) * | 2022-01-10 | 2024-01-30 | Red Hat, Inc. | Dynamic data batching for graph-based structures |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7734815B2 (en) * | 2006-09-18 | 2010-06-08 | Akamai Technologies, Inc. | Global load balancing across mirrored data centers |
US9531647B1 (en) * | 2013-03-15 | 2016-12-27 | Cavium, Inc. | Multi-host processing |
US9690687B2 (en) * | 2013-12-17 | 2017-06-27 | International Business Machines Corporation | Dynamic allocation of trace array timestamp data |
US9779128B2 (en) * | 2014-04-10 | 2017-10-03 | Futurewei Technologies, Inc. | System and method for massively parallel processing database |
US10262002B2 (en) * | 2016-08-11 | 2019-04-16 | International Business Machines Corporation | Consistent execution of partial queries in hybrid DBMS |
US10691449B2 (en) * | 2017-04-27 | 2020-06-23 | Microsoft Technology Licensing, Llc | Intelligent automatic merging of source control queue items |
CN108984571B (zh) * | 2017-06-05 | 2023-08-29 | 金篆信科有限责任公司 | 事务标识操作方法、***和计算机可读存储介质 |
-
2021
- 2021-11-26 US US17/535,832 patent/US20220171756A1/en active Pending
- 2021-11-29 CN CN202180078830.4A patent/CN116547660A/zh active Pending
- 2021-11-29 WO PCT/CN2021/134137 patent/WO2022111707A1/en active Application Filing
- 2021-11-29 EP EP21897207.3A patent/EP4252118A4/en active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2022111707A1 (en) | 2022-06-02 |
EP4252118A1 (en) | 2023-10-04 |
EP4252118A4 (en) | 2024-04-24 |
US20220171756A1 (en) | 2022-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10067791B2 (en) | Methods and apparatus for resource management in cluster computing | |
US10678445B2 (en) | Recovery in data centers | |
US9501502B2 (en) | Locking protocol for partitioned and distributed tables | |
EP2565806B1 (en) | Multi-row transactions | |
EP3252617B1 (en) | Transaction processing method, processing node, central node and cluster | |
US8996469B2 (en) | Methods and apparatus for job state tracking in cluster computing | |
US9804889B2 (en) | Methods and apparatus for state objects in cluster computing | |
US9990392B2 (en) | Distributed transaction processing in MPP databases | |
CN110188110B (zh) | 一种构建分布式锁的方法及装置 | |
CN115668141A (zh) | 使用时间戳对网络中的事务进行分布式处理 | |
US20230099664A1 (en) | Transaction processing method, system, apparatus, device, storage medium, and program product | |
EP3379421B1 (en) | Method, apparatus, and chip for implementing mutually-exclusive operation of multiple threads | |
US20140279960A1 (en) | Row Level Locking For Columnar Data | |
US11500693B2 (en) | Distributed system for distributed lock management and method for operating the same | |
CN116547660A (zh) | 使用全局时间戳的分布式数据库事务的方法和装置 | |
WO2023159976A1 (zh) | 数据分段写入方法、数据读取方法及装置 | |
WO2020037896A1 (zh) | 人脸特征值提取方法、装置、计算机设备及存储介质 | |
Pankowski | Consistency and availability of Data in replicated NoSQL databases | |
Malkhi et al. | Spanner's concurrency control | |
US20150033232A1 (en) | Automatic parallelism tuning for apply processes | |
JP7458512B2 (ja) | 分散トランザクション処理方法、端末およびコンピュータ読み取り可能な記憶媒体 | |
WO2022001629A1 (zh) | 一种数据库***、管理事务的方法及装置 | |
US20220318263A1 (en) | Data visibility for nested transactions in distributed systems | |
US10871971B2 (en) | Method, electronic device and computer program product for dual-processor storage system | |
Wang et al. | Comprehensive framework of rdma-enabled concurrency control protocols |
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 |