CN116149803A - 数据库的事务处理方法、装置、电子设备及存储介质 - Google Patents
数据库的事务处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116149803A CN116149803A CN202211716830.5A CN202211716830A CN116149803A CN 116149803 A CN116149803 A CN 116149803A CN 202211716830 A CN202211716830 A CN 202211716830A CN 116149803 A CN116149803 A CN 116149803A
- Authority
- CN
- China
- Prior art keywords
- transaction
- transaction identifier
- data node
- identifier
- statement
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- 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/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例涉及一种数据库的事务处理方法、装置、电子设备及存储介质,上述方法包括:获取全局事务管理器生成的事务标识,将所述事务标识作为第一事务标识;接收待处理事务的第一写语句,以及确定所述待处理事务的第二事务标识;基于所述第一事务标识和所述第二事务标识,生成单机事务标识;将所述第一写语句和所述单机事务标识发送至所述第一写语句对应的第一数据节点,其中,所述第一数据节点用于采用所述单机事务标识执行所述第一写语句;向所述第一数据节点发送所述第一写语句的第一提交指令,以处理所述待处理事务,其中,所述第一数据节点用于执行所述第一提交指令指示的提交操作。由此,可以提高事务的处理速度。
Description
技术领域
本申请涉及数据库技术领域,尤其涉及一种数据库的事务处理方法、装置、电子设备及存储介质。
背景技术
分布式数据库需要处理多个数据分片之间的数据在事务交互过程中的一致性。现有的分布式数据库,通过使用全局状态(Global Snapshot)的方式,进行事务原子性保障。通过锁或者MVCC(Multi-Version Concurrency Control多版本并发控制)技术,来完成事务的隔离性与一致性保障。在上述方案中,所有的事务在事务开始的时候会去GTM(GlobaleTransaction Manager,全局事务管理器)上申请GTID(Globale Transaction Identity,全局事务标识)。在事务结束的时候,会去GTM上删除GTID。GTM上维护所有已经申请但还未释放的GTID列表。
然而,上述处理方式中,所有事务都会申请GTID,GTM的TPS(Transaction perSecond,吞吐量)高、所维护和传输的GTID数量多,影响数据传输效率,造成数据交互时延,事务的处理效率较低。
发明内容
鉴于此,为解决上述部分或全部技术问题,本申请实施例提供一种数据库的事务处理方法、装置、电子设备及存储介质。
第一方面,本申请实施例提供一种数据库的事务处理方法,所述方法包括:
获取全局事务管理器生成的事务标识,将所述事务标识作为第一事务标识;
接收待处理事务的第一写语句,以及确定所述待处理事务的第二事务标识;
基于所述第一事务标识和所述第二事务标识,生成单机事务标识;
将所述第一写语句和所述单机事务标识发送至所述第一写语句对应的第一数据节点,其中,所述第一数据节点用于采用所述单机事务标识执行所述第一写语句;
向所述第一数据节点发送所述第一写语句的第一提交指令,以处理所述待处理事务,其中,所述第一数据节点用于执行所述第一提交指令指示的提交操作。
在一个可能的实施方式中,所述方法还包括:
接收所述待处理事务的第二写语句;
在所述第二写语句对应的第二数据节点并非所述第一数据节点的情况下,向所述全局事务管理器发送第一状态信息,以及将所述第二写语句和所述单机事务标识发送至所述第二数据节点,其中,所述第一状态信息用于指示所述全局事务管理器将所述单机事务标识确定为活跃状态,所述第二数据节点用于采用所述单机事务标识执行所述第二写语句;
向所述第二数据节点发送所述第二写语句的第二提交指令,其中,所述第二数据节点用于执行所述第二提交指令指示的提交操作;
响应于所述第二数据节点完成所述提交操作,并且,所述第二写语句为所述待处理事务的最后一条处理语句,向所述全局事务管理器发送第二状态信息,其中,所述第二状态信息用于指示所述全局事务管理器将所述单机事务标识确定为非活跃状态。
在一个可能的实施方式中,所述向所述全局事务管理器发送第二状态信息之后,所述方法还包括:
向目标终端发送用于指示所述待处理事务处理完成的反馈信息;和/或
向所述第二数据节点发送用于从所述第二数据节点的本地目标标识集合中移除所述单机事务标识的移除指令,其中,所述本地目标标识集合包括处于活跃状态的单机事务标识。
在一个可能的实施方式中,所述方法还包括:
接收查询语句;
在所述查询语句经由第三数据节点执行的情况下,将所述查询语句发送至所述第三数据节点,其中,所述第三数据节点存储有所述第三数据节点接收到的单机事务标识,所述第三数据节点用于基于所存储的、所述查询语句对应的单机事务标识执行对应的操作。
在一个可能的实施方式中,所述第三数据节点还用于维护本地目标标识集合,所述本地目标标识集合包括处于活跃状态的单机事务标识;以及
所述第三数据节点采用如下方式,基于所存储的、所述查询语句对应的单机事务标识执行对应的操作:
从已存储的单机事务标识中,确定所述查询语句对应的单机事务标识;
确定所述本地目标标识集合是否包括所述查询语句对应的单机事务标识;
在所述本地目标标识集合包括所述查询语句对应的单机事务标识的情况下,执行等待重试操作;
在所述本地目标标识集合不包括所述查询语句对应的单机事务标识的情况下,读取所述查询语句指示查询的数据。
在一个可能的实施方式中,所述基于所述第一事务标识和所述第二事务标识,生成单机事务标识,包括:
将所述第一事务标识与所述第二事务标识进行拼接,生成单机事务标识。
在一个可能的实施方式中,每个事务对应生成一个单机事务标识。
第二方面,本申请实施例提供一种数据库的事务处理装置,所述装置包括:
获取单元,用于获取全局事务管理器生成的事务标识,将所述事务标识作为第一事务标识;
第一接收单元,用于接收待处理事务的第一写语句,以及确定所述待处理事务的第二事务标识;
生成单元,用于基于所述第一事务标识和所述第二事务标识,生成单机事务标识;
第一发送单元,用于将所述第一写语句和所述单机事务标识发送至所述第一写语句对应的第一数据节点,其中,所述第一数据节点用于采用所述单机事务标识执行所述第一写语句;
第二发送单元,用于向所述第一数据节点发送所述第一写语句的第一提交指令,以处理所述待处理事务,其中,所述第一数据节点用于执行所述第一提交指令指示的提交操作。
在一个可能的实施方式中,所述装置还包括:
第二接收单元,用于接收所述待处理事务的第二写语句;
第三发送单元,用于在所述第二写语句对应的第二数据节点并非所述第一数据节点的情况下,向所述全局事务管理器发送第一状态信息,以及将所述第二写语句和所述单机事务标识发送至所述第二数据节点,其中,所述第一状态信息用于指示所述全局事务管理器将所述单机事务标识确定为活跃状态,所述第二数据节点用于采用所述单机事务标识执行所述第二写语句;
第四发送单元,用于向所述第二数据节点发送所述第二写语句的第二提交指令,其中,所述第二数据节点用于执行所述第二提交指令指示的提交操作;
第五发送单元,用于响应于所述第二数据节点完成所述提交操作,并且,所述第二写语句为所述待处理事务的最后一条处理语句,向所述全局事务管理器发送第二状态信息,其中,所述第二状态信息用于指示所述全局事务管理器将所述单机事务标识确定为非活跃状态。
在一个可能的实施方式中,所述向所述全局事务管理器发送第二状态5信息之后,所述装置还包括:
第七发送单元,用于向目标终端发送用于指示所述待处理事务处理完成的反馈信息;和/或
第八发送单元,用于向所述第二数据节点发送用于从所述第二数据节
点的本地目标标识集合中移除所述单机事务标识的移除指令,其中,所述0本地目标标识集合包括处于活跃状态的单机事务标识。
在一个可能的实施方式中,所述装置还包括:
第三接收单元,用于接收查询语句;
第六发送单元,用于在所述查询语句经由第三数据节点执行的情况下,
将所述查询语句发送至所述第三数据节点,其中,所述第三数据节点存储5有所述第三数据节点接收到的单机事务标识,所述第三数据节点用于基于
所存储的、所述查询语句对应的单机事务标识执行对应的操作。
在一个可能的实施方式中,所述第三数据节点还用于维护本地目标标识集合,所述本地目标标识集合包括处于活跃状态的单机事务标识;以及所述第三数据节点采用如下方式,基于所存储的、所述查询语句对应0的单机事务标识执行对应的操作:
从已存储的单机事务标识中,确定所述查询语句对应的单机事务标识;
确定所述本地目标标识集合是否包括所述查询语句对应的单机事务标识;
在所述本地目标标识集合包括所述查询语句对应的单机事务标识的情5况下,执行等待重试操作;
在所述本地目标标识集合不包括所述查询语句对应的单机事务标识的情况下,读取所述查询语句指示查询的数据。
在一个可能的实施方式中,所述基于所述第一事务标识和所述第二事
务标识,生成单机事务标识,包括:
0将所述第一事务标识与所述第二事务标识进行拼接,生成单机事务标识。
在一个可能的实施方式中,每个事务对应生成一个单机事务标识。
第三方面,本申请实施例提供一种电子设备,包括:
存储器,用于存储计算机程序;
5处理器,用于执行所述存储器中存储的计算机程序,且所述计算机程序被执行时,实现本申请上述第一方面的数据库的事务处理方法中任一实施例的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如上述第一方面的数据库的事务处理方法中任一实施例的方法。
第五方面,本申请实施例提供一种计算机程序,所述计算机程序包括计算机可读代码,当所述计算机可读代码在设备上运行时,使得该设备中的处理器实现如上述第一方面的数据库的事务处理方法中任一实施例的方法。
本申请实施例提供的数据库的事务处理方法,可以获取全局事务管理器生成的事务标识,将所述事务标识作为第一事务标识,之后,接收待处理事务的第一写语句,以及确定所述待处理事务的第二事务标识,然后,基于所述第一事务标识和所述第二事务标识,生成单机事务标识,随后,将所述第一写语句和所述单机事务标识发送至所述第一写语句对应的第一数据节点,其中,所述第一数据节点用于采用所述单机事务标识执行所述第一写语句,最后,向所述第一数据节点发送所述第一写语句的第一提交指令,以处理所述待处理事务,其中,所述第一数据节点用于执行所述第一提交指令指示的提交操作。本方法通过基于全局事务管理器生成的事务标识和待处理事务对应的第二事务标识,来生成单机事务标识,进而利用该单机事务标识进行事务处理,降低了与全局事务管理器之间的交互频率和交互次数,降低了全局事务管理器的吞吐量。在一些情况下,全局事务管理器可以为多个事务生成一个事务标识,降低了全局事务管理器生成及传输事务标识的数量和频次。由此,可以提高全局事务管理器的数据传输效率、降低数据传输时延,进而提高了事务的处理速度。
附图说明
图1A为本申请实施例提供的一种数据库的事务处理方法的流程示意图;
图1B为针对图1A的实施例的一种事务标识的分配流程示意图;
图1C为针对图1A的实施例的一种单分片事务处理的交互示意图;
图2A为本申请实施例提供的另一种数据库的事务处理方法的部分流程示意图;
图2B为针对图2A的实施例的一种分布式事务处理的交互示意图;
图3A为本申请实施例提供的又一种数据库的事务处理方法的部分流程示意图;
图3B为针对图3A的实施例的一种事务并发控制的交互示意图;
图4为本申请实施例提供的一种数据库的事务处理装置的结构示意图;
图5为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
现在将参照附图来详细描述本申请的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值并不限制本申请的范围。
本领域技术人员可以理解,本申请实施例中的“第一”、“第二”等术语仅用于区别不同步骤、设备或模块等对象,既不代表任何特定技术含义,也不表示它们之间的逻辑顺序。
还应理解,在本实施例中,“多个”可以指两个或两个以上,“至少一个”可以指一个、两个或两个以上。
还应理解,对于本申请实施例中提及的任一部件、数据或结构,在没有明确限定或者在前后文给出相反启示的情况下,一般可以理解为一个或多个。
另外,本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本申请中字符“/”,一般表示前后关联对象是一种“或”的关系。
还应理解,本申请对各个实施例的描述着重强调各个实施例之间的不同之处,其相同或相似之处可以相互参考,为了简洁,不再一一赘述。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本申请及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,上述技术、方法和设备应当被视为说明书的一部分。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。为便于对本申请实施例的理解,下面将参考附图并结合实施例来详细说明本申请。显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1A为本申请实施例提供的一种数据库的事务处理方法的流程示意图。该方法可以部署于服务器端的计算节点(CN,Compute Node)。如图1A所示,该方法具体包括:
步骤101,获取全局事务管理器生成的事务标识,将所述事务标识作为第一事务标识。
在本实施例中,全局事务管理器,可以周期性地生成事务标识。由此,计算节点可以周期性地获取全局事务管理器生成的事务标识。或者,全局事务管理器,可以在预设情况下生成事务标识,以便计算节点进行获取全局事务管理器生成的事务标识。
步骤102,接收待处理事务的第一写语句,以及确定所述待处理事务的第二事务标识。
在本实施例中,第一写语句,可以是用于处理待处理事务的第一条写语句。或者,第一写语句,可以是用于通过已处理过待处理事务的数据节点处理的写语句。
第二事务标识,可以是接收到第一写语句之后所确定的事务标识。
在一些情况下,第一事务标识,可以是接收到第一写语句之前所获取的事务标识。
在一些情况下,每个事务(包括待处理事务),可以对应一个第二事务标识。不同的事务(包括待处理事务),可以对应不同的第二事务标识。
这里,可以采用预设策略来生成第二事务标识。例如,可以采用递增的方式,来生成第二事务标识。
步骤103,基于所述第一事务标识和所述第二事务标识,生成单机事务标识。
在本实施例中,可以采用多种方式,来执行上述步骤103。
作为示例,可以将所述第一事务标识与所述第二事务标识进行拼接,生成单机事务标识。
在一些情况下,每个事务(包括每个待处理事务)可以对应生成一个单机事务标识。不同的事务(包括每个待处理事务)可以对应生成不同的单机事务标识。不同的事务(包括每个待处理事务)分别对应的单机事务标识中的第一事务标识和/或第二事务标识不同。
步骤104,将所述第一写语句和所述单机事务标识发送至所述第一写语句对应的第一数据节点,其中,所述第一数据节点用于采用所述单机事务标识执行所述第一写语句。
在本实施例中,第一数据节点,可以是用于执行上述第一写语句的数据节点。
步骤105,向所述第一数据节点发送所述第一写语句的第一提交指令,以处理所述待处理事务,其中,所述第一数据节点用于执行所述第一提交指令指示的提交操作。
在本实施例中,第一提交指令,可以用于指示第一数据节点执行第一写语句的提交操作。
作为示例,请参照图1B,图1B为针对图1A的实施例的一种事务标识的分配流程示意图。
如图1B所示,在处理交互式执行的事务过程中,数据库在事务开始的时候,并不清楚事务后续写语句(例如SQL(Structured Query Language)语句)是否会跨分片处理。所以,此时GTM生成的事务标识并不能区分单机事务或分布式事务。这里,提前将事务标识推送到各个CN节点,且此时并不记录事务状态为活跃。仅当事务中出现访问第二个分片的写语句的时候,才会将事务标识置为活跃。
请继续参考图1C,图1C为针对图1A的实施例的一种单分片事务处理的交互示意图。
如图1C所示,如果事务整个过程中都不涉及到跨分片写,则在获得写语句(对应上述第一写语句)之后,CN节点不会与GTM进行交互。
具体地,运行于终端(例如后文所描述的目标终端)的应用可以下发写语句(例如上述第一写语句)给CN节点。CN节点将写语句(也即上述第一写语句)连同单机事务标识,下发给DN节点(也即上述第一数据节点)。
在应用下发提交(commit)命令之前,如果不再有其它DN节点需要处理的写语句(也即仅由第一数据节点即可执行待处理事务的全部写语句),则CN节点直接下发commit命令。
由此,对于单分片的待处理事务,直接使用CN节点分发的GTID(也即上述单机事务标识)进行数据提交,在接收到待处理事务后不需要和GTM进行交互。
本申请实施例提供的数据库的事务处理方法,可以获取全局事务管理器生成的事务标识,将所述事务标识作为第一事务标识,之后,接收待处理事务的第一写语句,以及确定所述待处理事务的第二事务标识,然后,基于所述第一事务标识和所述第二事务标识,生成单机事务标识,随后,将所述第一写语句和所述单机事务标识发送至所述第一写语句对应的第一数据节点,其中,所述第一数据节点用于采用所述单机事务标识执行所述第一写语句,最后,向所述第一数据节点发送所述第一写语句的第一提交指令,以处理所述待处理事务,其中,所述第一数据节点用于执行所述第一提交指令指示的提交操作。本方法通过基于全局事务管理器生成的事务标识和待处理事务对应的第二事务标识,来生成单机事务标识,进而利用该单机事务标识进行事务处理,降低了与全局事务管理器之间的交互频率和交互次数,降低了全局事务管理器的吞吐量。在一些情况下,全局事务管理器可以为多个事务生成一个事务标识,降低了全局事务管理器生成及传输事务标识的数量和频次。由此,可以提高全局事务管理器的数据传输效率、降低数据传输时延,进而提高了事务的处理速度。
图2A为本申请实施例提供的另一种数据库的事务处理方法的部分流程示意图。如图2A所示,该方法除上述步骤101-105之外,还包括:
步骤106,接收所述待处理事务的第二写语句。
在本实施例中,第二写语句,可以是待处理事务的任一写语句。
步骤107,在所述第二写语句对应的第二数据节点并非所述第一数据节点的情况下,向所述全局事务管理器发送第一状态信息,以及将所述第二写语句和所述单机事务标识发送至所述第二数据节点,其中,所述第一状态信息用于指示所述全局事务管理器将所述单机事务标识确定为活跃状态,所述第二数据节点用于采用所述单机事务标识执行所述第二写语句。
在本实施例中,第二数据节点,可以是用于执行上述第二写语句的数据节点。
这里,全局事务管理器可以通过维护活跃状态的全局事务标识集合,来实现将单机事务标识确定为活跃状态。或者,全局事务管理器也可以通过将全部全局事务标识与是否活跃的信息相关联,来实现将单机事务标识确定为活跃状态或非活跃状态。
其中,上述全局事务标识值集合中,可以包括处于活跃状态的单机事务标识对应的全局事务标识。
这里,单机事务标识对应的全局事务标识,可以与该单机事务标识相同。DN节点维护的本地目标标识集合中为单机事务标识,GTM维护的全局事务标识集合中为全局事务标识。
步骤108,向所述第二数据节点发送所述第二写语句的第二提交指令,其中,所述第二数据节点用于执行所述第二提交指令指示的提交操作。
在本实施例中,第二提交指令,可以用于指示第二数据节点执行第二写语句的提交操作。
步骤109,响应于所述第二数据节点完成所述提交操作,并且,所述第二写语句为所述待处理事务的最后一条处理语句,向所述全局事务管理器发送第二状态信息,其中,所述第二状态信息用于指示所述全局事务管理器将所述单机事务标识确定为非活跃状态。
作为示例,请参照图1B,图1B为针对图1A的实施例的一种事务标识的分配流程示意图。
如图1B所示,在处理交互式执行的事务过程中,数据库在事务开始的时候,并不清楚事务后续写语句(例如SQL(Structured Query Language)语句)是否会跨分片处理。所以,此时GTM生成的事务标识并不能区分单机事务或分布式事务。为解决这一问题,这里,提前将事务标识推送到各个CN节点,且此时并不记录事务状态为活跃。仅当事务中出现访问第二个分片的写语句的时候,才会将事务标识置为活跃。
图示中,CN1、CN2、CN3分别表示不同的计算节点,CN1、CN2、CN3分别周期性地获取全局事务管理器生成的第一事务标识(gtmprefix)。之后,计算节点接收到了APP发送的待处理事务(用于***数据a、b)。其中,第一写语句用于指示通过DN1(也即上述第一数据节点)***数据a,第二写语句用于指示通过DN2(也即上述第二数据节点)***数据b。由此,CN1节点确定上述待处理事务的第二事务标识为“P1_001”,之后,基于第一事务标识“gtmprefix”和所述第二事务标识“P1_001”,生成单机事务标识“gtmprefix_P1_001”。将用于指示通过DN1(也即上述第一数据节点)***数据a的第一写语句和单机事务标识“gtmprefix_P1_001”发送至DN1节点。将用于指示通过DN2(也即上述第二数据节点)***数据b的第二写语句和单机事务标识“gtmprefix_P1_001”发送至DN2节点。之后,CN1节点向全局事务管理器发送第一状态信息“make_gtidx_active”.
此外,图示中,“insert a,b”、“insert c”、“insert d”分别表示不同的待处理事务,上述不同待处理事务分别对应不同的第二事务标识,进一步地,上述不同待处理事务分别对应不同的单机事务标识。
请参照图2B,图2B为针对图2A的实施例的一种分布式事务处理的交互示意图。
具体地,运行于终端(也即上述目标终端)的应用开启事务,向CN节点和DN节点发送第一条写入语句(也即上述第一写语句)。CN节点携带着之前获取的GTID值(也即上述第一事务标识),补充完第二事务标识后,连同写语句一起发送给DN节点(也即上述第一数据节点)。然后,CN节点接收到应用发送的访问新DN节点(也即上述第二数据节点)的写SQL(也即上述第二写语句)时,去GTM上将刚刚的GTID置为活跃。随后,CN节点将访问新DN节点的写SQL发往对应的新DN节点。应用发起提交(commit)事务命令,CN节点将GTID和commit命令一起发给新的DN节点。新的DN节点在commit的同时,将GTID持久化,用于后续其它事务访问数据时候的可见性判断依据。在新的DN节点完成
commit之后,CN节点去GTM上将刚刚的GTID置为不活跃。CN节点将
commit完成结果返回给应用。CN节点通知DN节点异步完成,GTID从活5跃事务列表(也即上述本地目标标识集合)中移除。
需要说明的是,除以上所记载的内容之外,本实施例还可以包括图1A对应的实施例中所描述的相应技术特征,进而实现图1A所示数据库的事务处理方法的技术效果,具体请参照图1A相关描述,为简洁描述,在此不作赘述。
0本申请实施例提供的数据库的事务处理方法,可以在实际处理待处理
事务的过程中,判断第二写语句对应的第二数据节点是否处理过该待处理事务的写语句,无需业务提供标注信息(也即无需提前标注出单机事务还是分布式事务),并且,未对业务带来侵入,无需识别标注信息,不会出现由于误识别标注信息而产生的事务误处理风险。
5在本实施例的一些可选的实现方式中,在向所述全局事务管理器发送第
二状态信息之后,还可以向目标终端发送用于指示所述待处理事务处理完成的反馈信息。
其中,目标终端,可以用于发送上述待处理事务。
可以理解,上述可选的实现方式中,通过向目标终端发送反馈信息,使0得目标终端获得相应的事务处理状态。
在本实施例的一些可选的实现方式中,在向所述全局事务管理器发送第二状态信息之后,还可以向所述第二数据节点发送用于从所述第二数据节点的本地目标标识集合中移除所述单机事务标识的移除指令,其中,所述本地目标标识集合包括处于活跃状态的单机事务标识。
5此外,在向所述全局事务管理器发送第二状态信息之后,还可以向所
述全局事务管理器发送用于从全局事务标识值集合中,移除所述单机事务标识对应的全局事务标识的移除指令。
其中,上述全局事务标识值集合中,可以包括处于活跃状态的单机事务标识对应的全局事务标识。
0这里,单机事务标识对应的全局事务标识,可以与该单机事务标识相
同。DN节点维护的本地目标标识集合中为单机事务标识,GTM维护的全局事务标识集合中为全局事务标识。
可以理解,上述可选的实现方式中,在第二数据节点完成提交操作,
并且,第二写语句为待处理事务的最后一条处理语句的情况下,在将GTM5上的单机事务标识确定为非活跃状态之后,可以从全局事务标识集合中移除相应的全局事务标识,以使相应数据生效。
图3A为本申请实施例提供的又一种数据库的事务处理方法的部分流程示意图。如图3A所示,该方法除上述步骤101-105之外,还可以包括:
步骤110,接收查询语句。
步骤111,在所述查询语句经由第三数据节点执行的情况下,将所述查询语句发送至所述第三数据节点,其中,所述第三数据节点存储有所述第三数据节点接收到的单机事务标识,所述第三数据节点用于基于所存储的、所述查询语句对应的单机事务标识执行对应的操作。
在本实施例中,第三数据节点,可以是用于执行上述查询语句的数据节点。
具体地,在第三数据节点从查询语句对应的数据行上获取单机事务标识。
在本实施例的一些可选的实现方式中,所述第三数据节点还用于维护本地目标标识集合。所述本地目标标识集合包括处于活跃状态的单机事务标识。
所述第三数据节点采用如下方式,基于所存储的、所述查询语句对应的单机事务标识执行对应的操作:
首先,从已存储的单机事务标识中,确定所述查询语句对应的单机事务标识。
之后,确定所述本地目标标识集合是否包括所述查询语句对应的单机事务标识。
在所述本地目标标识集合包括所述查询语句对应的单机事务标识的情况下,执行等待重试操作。
在所述本地目标标识集合不包括所述查询语句对应的单机事务标识的情况下,读取所述查询语句指示查询的数据。
可以理解,上述可选的实现方式中,通过DN本地维护处于活跃状态的单机事务标识,进而可以利用处于活跃状态的单机事务标识进行数据的可见性判断,对于由于时延可能导致的误判,可以通过重试等待的方式解决。
本申请实施例提供的数据库的事务处理方法,通过第三数据节点本地存储的单机事务标识,即可执行对应查询语句的操作,在查询过程中,无需与全局事务管理器进行交互,进一步降低了与全局事务管理器之间的交互频率和交互次数,降低了全局事务管理器的吞吐量。可以进一步提高全局事务管理器的数据传输效率、降低数据传输时延,进而提高了事务的处理速度。
作为示例,请参照图3B,图3B为针对图3A的实施例的一种事务并发控制的交互示意图。当事务2要访问事务1涉及到的数据时,具体步骤是:
应用下发查询语句给CN节点。CN节点将查询语句发给DN(也即上述第三数据节点)。DN节点从查询的数据行上获取GTID值(也即上述单机事务标识),判断GTID值是否在DN节点维护的活跃事务列表(也即上述本地目标标识集合)中。如果不在活跃事务列表中,则读取对应的数据;如果在活跃事务列表中,则等待重试。
由此,本方案通过数据行上的GTID是否活跃,来判断数据是否可见,通过将GTID从DN节点维护的本地事务列表移除来完成事务提交。
下面对本申请实施例进行示例性说明,但需要注意的是,本申请实施例可以具有以下所描述的特征,但以下描述并不构成对本申请实施例保护范围的限定。
如图1B所示,在处理交互式执行的事务过程中,数据库在事务开始的时候,并不清楚事务后续写语句(例如SQL(Structured Query Language)语句)是否会跨分片处理。所以,此时GTM生成的事务标识并不能区分单机事务或分布式事务。为解决这一问题,这里,提前将事务标识推送到各个CN节点,且此时并不记录事务状态为活跃。仅当事务中出现访问第二个分片的写语句的时候,才会将事务标识置为活跃。
图示中,CN1、CN2、CN3分别表示不同的计算节点,CN1、CN2、CN3分别周期性地获取全局事务管理器生成的第一事务标识(gtmprefix)。之后,计算节点接收到APP发送的待处理事务(用于***数据a、b)。其中,第一写语句用于指示通过DN1(也即上述第一数据节点)***数据a,第二写语句用于指示通过DN2(也即上述第二数据节点)***数据b。由此,CN1节点确定上述待处理事务的第二事务标识为“P1_001”,之后,基于第一事务标识“gtmprefix”和所述第二事务标识“P1_001”,生成单机事务标识“gtmprefix_P1_001”。将用于指示通过DN1(也即上述第一数据节点)***数据a的第一写语句和单机事务标识“gtmprefix_P1_001”发送至DN1节点。将用于指示通过DN2(也即上述第二数据节点)***数据b的第二写语句和单机事务标识“gtmprefix_P1_001”发送至DN2节点。之后,CN1节点向全局事务管理器发送第一状态信息“make_gtidx_active”.
此外,图示中,“insert a,b”、“insert c”、“insert d”分别表示不同的待处理事务,上述不同待处理事务分别对应不同的第二事务标识,进一步地,上述不同待处理事务分别对应不同的单机事务标识。
如图1C所示,如果事务整个过程中都不涉及到跨分片写,则在获得写语句(对应上述第一写语句)之后,CN节点不会与GTM进行交互。
具体地,运行于终端(例如后文所描述的目标终端)的应用可以下发写语句(例如上述第一写语句)给CN节点。CN节点将写语句(也即上述第一写语句)连同单机事务标识,下发给DN节点(也即上述第一数据节点)。
在应用下发提交(commit)命令之前,如果不再有其它DN节点需要处理的写语句(也即仅有第一数据节点即可执行待处理事务的全部写语句),则CN节点直接下发commit命令。
由此,对于单分片的待处理事务,直接使用CN节点分发的GTID(也即上述单机事务标识)进行数据提交,在接收到待处理事务后不需要和GTM进行交互。
如图2B所示,运行于终端(也即上述目标终端)的应用开启事务,向CN节点和DN节点发送第一条写入语句(也即上述第一写语句)。CN节点携带着之前获取的GTID值(也即上述第一事务标识),补充完第二事务标识后,连同写语句一起发送给DN节点(也即上述第一数据节点)。然后,CN节点接收到应用发送的访问新DN节点(也即上述第二数据节点)的写SQL(也即上述第二写语句)时,去GTM上将刚刚的GTID置为活跃。随后,CN节点将访问新DN节点的写SQL发往对应的新DN节点。应用发起提交(commit)事务命令,CN节点将GTID和commit命令一起发给新的DN节点。新的DN节点在commit的同时,将GTID持久化,用于后续其它事务访问数据时候的可见性判断依据。在新的DN节点完成commit之后,CN节点去GTM上将刚刚的GTID置为不活跃。CN节点将commit完成结果返回给应用。CN节点通知DN节点异步完成,GTID从活跃事务列表(也即上述本地目标标识集合)中移除。
如图3B所示,当事务2要访问事务1涉及到的数据时,具体步骤是:
应用下发查询语句给CN节点。CN节点将查询语句发给DN(也即上述第三数据节点)。DN节点从查询的数据行上获取GTID值(也即上述单机事务标识),判断GTID值是否在DN节点维护的活跃事务列表(也即上述本地目标标识集合)中。如果不在活跃事务列表中,则读取对应的数据;如果在活跃事务列表中,则等待重试。
由此,本方案通过数据行上的GTID是否活跃,来判断数据是否可见,通过将GTID从DN节点维护的本地事务列表移除来完成事务提交。
需要说明的是,除以上所记载的内容之外,本实施例还可以包括以上各实施例中所描述的技术特征,进而实现以上所示数据库的事务处理方法的技术效果,具体请参照以上描述,为简洁描述,在此不作赘述。
由此方法,并非所有的事务都申请GTID,可以实现更小限度进行分布式事务。在正常的SQL执行过程中,对于数据的可见性判断,能够不依赖GTM维护的活跃事务列表,提升SQL执行的性能。具体地,在分布式数据库处理事务过程中,自动识别单机事务和分布式事务,且能够最大限度地降低单机事务的消耗。减小事务时延的同时,节约资源。通过本方法,减少了GTM的压力,去除部分数据可见性判断流程,降低事务执行时延,减少对业务的侵入,进而可以提升数据库性能上限。
图4为本申请实施例提供的一种数据库的事务处理装置的结构示意图。具体包括:
获取单元401,用于获取全局事务管理器生成的事务标识,将所述事务标识作为第一事务标识;
第一接收单元402,用于接收待处理事务的第一写语句,以及确定所述待处理事务的第二事务标识;
生成单元403,用于基于所述第一事务标识和所述第二事务标识,生成单机事务标识;
第一发送单元404,用于将所述第一写语句和所述单机事务标识发送至所述第一写语句对应的第一数据节点,其中,所述第一数据节点用于采用所述单机事务标识执行所述第一写语句;
第二发送单元405,用于向所述第一数据节点发送所述第一写语句的第一提交指令,以处理所述待处理事务,其中,所述第一数据节点用于执行所述第一提交指令指示的提交操作。
在一个可能的实施方式中,所述装置还包括:
第二接收单元(图中未示出),用于接收所述待处理事务的第二写语句;
第三发送单元(图中未示出),用于在所述第二写语句对应的第二数据节点并非所述第一数据节点的情况下,向所述全局事务管理器发送第一状态信息,以及将所述第二写语句和所述单机事务标识发送至所述第二数据节点,其中,所述第一状态信息用于指示所述全局事务管理器将所述单机事务标识确定为活跃状态,所述第二数据节点用于采用所述单机事务标识执行所述第二写语句;
第四发送单元(图中未示出),用于向所述第二数据节点发送所述第二写语句的第二提交指令,其中,所述第二数据节点用于执行所述第二提交指令指示的提交操作;
第五发送单元(图中未示出),用于响应于所述第二数据节点完成所述提交操作,并且,所述第二写语句为所述待处理事务的最后一条处理语句,向所述全局事务管理器发送第二状态信息,其中,所述第二状态信息用于指示所述全局事务管理器将所述单机事务标识确定为非活跃状态。
在一个可能的实施方式中,所述向所述全局事务管理器发送第二状态信息之后,所述装置还包括:
第七发送单元(图中未示出),用于向目标终端发送用于指示所述待处理事务处理完成的反馈信息;和/或
第八发送单元(图中未示出),用于向所述第二数据节点发送用于从所述第二数据节点的本地目标标识集合中移除所述单机事务标识的移除指令,其中,所述本地目标标识集合包括处于活跃状态的单机事务标识。
在一个可能的实施方式中,所述装置还包括:
第三接收单元(图中未示出),用于接收查询语句;
第六发送单元(图中未示出),用于在所述查询语句经由第三数据节点执行的情况下,将所述查询语句发送至所述第三数据节点,其中,所述第三数据节点存储有所述第三数据节点接收到的单机事务标识,所述第三数据节点用于基于所存储的、所述查询语句对应的单机事务标识执行对应的操作。
在一个可能的实施方式中,所述第三数据节点还用于维护本地目标标识集合,所述本地目标标识集合包括处于活跃状态的单机事务标识;以及
所述第三数据节点采用如下方式,基于所存储的、所述查询语句对应的单机事务标识执行对应的操作:
从已存储的单机事务标识中,确定所述查询语句对应的单机事务标识;
确定所述本地目标标识集合是否包括所述查询语句对应的单机事务标识;
在所述本地目标标识集合包括所述查询语句对应的单机事务标识的情况下,执行等待重试操作;
在所述本地目标标识集合不包括所述查询语句对应的单机事务标识的情况下,读取所述查询语句指示查询的数据。
在一个可能的实施方式中,所述基于所述第一事务标识和所述第二事务标识,生成单机事务标识,包括:
将所述第一事务标识与所述第二事务标识进行拼接,生成单机事务标识。
在一个可能的实施方式中,每个事务对应生成一个单机事务标识。
本实施例提供的数据库的事务处理装置可以是如图4中所示的数据库的事务处理装置,可执行以上所述的各数据库的事务处理方法的所有步骤,进而实现以上所述的各数据库的事务处理方法的技术效果,具体请参照以上相关描述,为简洁描述,在此不作赘述。
图5为本申请实施例提供的一种电子设备的结构示意图,图5所示的电子设备500包括:至少一个处理器501、存储器502、至少一个网络接口504和其他用户接口503。电子设备500中的各个组件通过总线***505耦合在一起。可理解,总线***505用于实现这些组件之间的连接通信。总线***505除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图5中将各种总线都标为总线***505。
其中,用户接口503可以包括显示器、键盘或者点击设备(例如,鼠标,轨迹球(trackball)、触感板或者触摸屏等。
可以理解,本申请实施例中的存储器502可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data RateSDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(DirectRambus RAM,DRRAM)。本文描述的存储器502旨在包括但不限于这些和任意其它适合类型的存储器。
在一些实施方式中,存储器502存储了如下的元素,可执行单元或者数据结构,或者他们的子集,或者他们的扩展集:操作***5021和应用程序5022。
其中,操作***5021,包含各种***程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序5022,包含各种应用程序,例如媒体播放器(Media Player)、浏览器(Browser)等,用于实现各种应用业务。实现本申请实施例方法的程序可以包含在应用程序5022中。
在本实施例中,通过调用存储器502存储的程序或指令,具体的,可以是应用程序5022中存储的程序或指令,处理器501用于执行各方法实施例所提供的方法步骤,例如包括:
获取全局事务管理器生成的事务标识,将所述事务标识作为第一事务标识;
接收待处理事务的第一写语句,以及确定所述待处理事务的第二事务标识;
基于所述第一事务标识和所述第二事务标识,生成单机事务标识;
将所述第一写语句和所述单机事务标识发送至所述第一写语句对应的第一数据节点,其中,所述第一数据节点用于采用所述单机事务标识执行所述第一写语句;
向所述第一数据节点发送所述第一写语句的第一提交指令,以处理所述待处理事务,其中,所述第一数据节点用于执行所述第一提交指令指示的提交操作。
上述本申请实施例揭示的方法可以应用于处理器501中,或者由处理器501实现。处理器501可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器501中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器501可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件单元组合执行完成。软件单元可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器502,处理器501读取存储器502中的信息,结合其硬件完成上述方法的步骤。
可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(ApplicationSpecific Integrated Circuits,ASIC)、数字信号处理器(Digital Signal Processing,DSP)、数字信号处理设备(DSPDevice,DSPD)、可编程逻辑设备(Programmable LogicDevice,PLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请的上述功能的其它电子单元或其组合中。
对于软件实现,可通过执行本文上述功能的单元来实现本文上述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
本实施例提供的电子设备可以是如图5中所示的电子设备,可执行以上所述的各数据库的事务处理方法的所有步骤,进而实现以上所述的各数据库的事务处理方法的技术效果,具体请参照以上相关描述,为简洁描述,在此不作赘述。
本申请实施例还提供了一种存储介质(计算机可读存储介质)。这里的存储介质存储有一个或者多个程序。其中,存储介质可以包括易失性存储器,例如随机存取存储器;存储器也可以包括非易失性存储器,例如只读存储器、快闪存储器、硬盘或固态硬盘;存储器还可以包括上述种类的存储器的组合。
当存储介质中一个或者多个程序可被一个或者多个处理器执行,以实现上述在电子设备侧执行的数据库的事务处理方法。
上述处理器用于执行存储器中存储的数据库的事务处理程序,以实现以下在电子设备侧执行的数据库的事务处理方法的步骤:
获取全局事务管理器生成的事务标识,将所述事务标识作为第一事务标识;
接收待处理事务的第一写语句,以及确定所述待处理事务的第二事务标识;
基于所述第一事务标识和所述第二事务标识,生成单机事务标识;
将所述第一写语句和所述单机事务标识发送至所述第一写语句对应的第一数据节点,其中,所述第一数据节点用于采用所述单机事务标识执行所述第一写语句;
向所述第一数据节点发送所述第一写语句的第一提交指令,以处理所述待处理事务,其中,所述第一数据节点用于执行所述第一提交指令指示的提交操作。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。此外,对于前述的各实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本发明所必须的。
Claims (10)
1.一种数据库的事务处理方法,其特征在于,所述方法包括:
获取全局事务管理器生成的事务标识,将所述事务标识作为第一事务标识;
接收待处理事务的第一写语句,以及确定所述待处理事务的第二事务标识;
基于所述第一事务标识和所述第二事务标识,生成单机事务标识;
将所述第一写语句和所述单机事务标识发送至所述第一写语句对应的第一数据节点,其中,所述第一数据节点用于采用所述单机事务标识执行所述第一写语句;
向所述第一数据节点发送所述第一写语句的第一提交指令,以处理所述待处理事务,其中,所述第一数据节点用于执行所述第一提交指令指示的提交操作。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收所述待处理事务的第二写语句;
在所述第二写语句对应的第二数据节点并非所述第一数据节点的情况下,向所述全局事务管理器发送第一状态信息,以及将所述第二写语句和所述单机事务标识发送至所述第二数据节点,其中,所述第一状态信息用于指示所述全局事务管理器将所述单机事务标识确定为活跃状态,所述第二数据节点用于采用所述单机事务标识执行所述第二写语句;
向所述第二数据节点发送所述第二写语句的第二提交指令,其中,所述第二数据节点用于执行所述第二提交指令指示的提交操作;
响应于所述第二数据节点完成所述提交操作,并且,所述第二写语句为所述待处理事务的最后一条处理语句,向所述全局事务管理器发送第二状态信息,其中,所述第二状态信息用于指示所述全局事务管理器将所述单机事务标识确定为非活跃状态。
3.根据权利要求2所述的方法,其特征在于,所述向所述全局事务管理器发送第二状态信息之后,所述方法还包括:
向目标终端发送用于指示所述待处理事务处理完成的反馈信息;和/或
向所述第二数据节点发送用于从所述第二数据节点的本地目标标识集合中移除所述单机事务标识的移除指令,其中,所述本地目标标识集合包括处于活跃状态的单机事务标识。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收查询语句;
在所述查询语句经由第三数据节点执行的情况下,将所述查询语句发送至所述第三数据节点,其中,所述第三数据节点存储有所述第三数据节点接收到的单机事务标识,所述第三数据节点用于基于所存储的、所述查询语句对应的单机事务标识执行对应的操作。
5.根据权利要求4所述的方法,其特征在于,所述第三数据节点还用于维护本地目标标识集合,所述本地目标标识集合包括处于活跃状态的单机事务标识;以及
所述第三数据节点采用如下方式,基于所存储的、所述查询语句对应的单机事务标识执行对应的操作:
从已存储的单机事务标识中,确定所述查询语句对应的单机事务标识;
确定所述本地目标标识集合是否包括所述查询语句对应的单机事务标识;
在所述本地目标标识集合包括所述查询语句对应的单机事务标识的情况下,执行等待重试操作;
在所述本地目标标识集合不包括所述查询语句对应的单机事务标识的情况下,读取所述查询语句指示查询的数据。
6.根据权利要求1-5之一所述的方法,其特征在于,所述基于所述第一事务标识和所述第二事务标识,生成单机事务标识,包括:
将所述第一事务标识与所述第二事务标识进行拼接,生成单机事务标识。
7.根据权利要求1-5之一所述的方法,其特征在于,每个事务对应生成一个单机事务标识。
8.一种数据库的事务处理装置,其特征在于,所述装置包括:
获取单元,用于获取全局事务管理器生成的事务标识,将所述事务标识作为第一事务标识;
第一接收单元,用于接收待处理事务的第一写语句,以及确定所述待处理事务的第二事务标识;
生成单元,用于基于所述第一事务标识和所述第二事务标识,生成单机事务标识;
第一发送单元,用于将所述第一写语句和所述单机事务标识发送至所述第一写语句对应的第一数据节点,其中,所述第一数据节点用于采用所述单机事务标识执行所述第一写语句;
第二发送单元,用于向所述第一数据节点发送所述第一写语句的第一提交指令,以处理所述待处理事务,其中,所述第一数据节点用于执行所述第一提交指令指示的提交操作。
9.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述存储器中存储的计算机程序,且所述计算机程序被执行时,实现上述权利要求1-7任一所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现上述权利要求1-7任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211716830.5A CN116149803A (zh) | 2022-12-27 | 2022-12-27 | 数据库的事务处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211716830.5A CN116149803A (zh) | 2022-12-27 | 2022-12-27 | 数据库的事务处理方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116149803A true CN116149803A (zh) | 2023-05-23 |
Family
ID=86372820
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211716830.5A Pending CN116149803A (zh) | 2022-12-27 | 2022-12-27 | 数据库的事务处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116149803A (zh) |
-
2022
- 2022-12-27 CN CN202211716830.5A patent/CN116149803A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107391628B (zh) | 数据同步方法及装置 | |
CN104021043B (zh) | 批量应用程序的中断重入方法及*** | |
CN108874558B (zh) | 分布式事务的消息订阅方法、电子装置及可读存储介质 | |
WO2020181810A1 (zh) | 应用于集群内多级缓存的数据处理方法和装置 | |
CN109542682B (zh) | 一种数据备份方法、装置、设备和存储介质 | |
CN110753084B (zh) | 上链数据读取方法、缓存服务器及计算机可读存储介质 | |
CN111930489B (zh) | 一种任务调度方法、装置、设备及存储介质 | |
CN110968478A (zh) | 日志采集方法、服务器及计算机存储介质 | |
CN111338834B (zh) | 数据存储方法和装置 | |
CN112765126B (zh) | 数据库事务的管理方法、装置、计算机设备和存储介质 | |
CN108334333B (zh) | 一种源代码库更新方法及装置 | |
US6944618B2 (en) | Method, computer program product, and system for unloading a hierarchical database utilizing segment specific selection criteria | |
CN111444208A (zh) | 一种数据更新方法及相关设备 | |
CN108121514B (zh) | 元信息更新方法、装置、计算设备及计算机存储介质 | |
CN112860746B (zh) | 一种基于缓存削减的方法、设备及*** | |
WO2023111910A1 (en) | Rolling back database transaction | |
CN116149803A (zh) | 数据库的事务处理方法、装置、电子设备及存储介质 | |
CN112764897B (zh) | 任务请求的处理方法、装置、***及计算机可读存储介质 | |
CN115640280A (zh) | 数据迁移方法及装置 | |
CN105760283A (zh) | 一种日志输出方法和装置 | |
US10503722B2 (en) | Log management apparatus and log management method | |
CN113220237A (zh) | 一种分布式存储方法、装置、设备及存储介质 | |
CN108345431B (zh) | 一种数据读取的方法及装置 | |
CN114722261A (zh) | 一种资源的处理方法、装置、电子设备及存储介质 | |
CN111984460B (zh) | 元数据的恢复方法及装置 |
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 |