CN117762574A - 分布式数据库中全局事务的管理方法及装置 - Google Patents
分布式数据库中全局事务的管理方法及装置 Download PDFInfo
- Publication number
- CN117762574A CN117762574A CN202311706528.6A CN202311706528A CN117762574A CN 117762574 A CN117762574 A CN 117762574A CN 202311706528 A CN202311706528 A CN 202311706528A CN 117762574 A CN117762574 A CN 117762574A
- Authority
- CN
- China
- Prior art keywords
- gtid
- field
- list
- active
- active list
- 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
- 238000007726 management method Methods 0.000 title description 16
- 238000000034 method Methods 0.000 claims abstract description 30
- 230000006870 function Effects 0.000 claims description 12
- 238000012423 maintenance Methods 0.000 claims description 10
- 238000004891 communication Methods 0.000 claims description 9
- 238000004590 computer program Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种分布式数据库中全局事务的管理方法及装置,该方法包括:在当前事务为写事务的情况下,在GTM中生成当前事务对应的GTID、第一字段以及第二字段;发送GTID与第二字段至CN,并发送第一字段与第二字段至DN;在DN获取到第一字段与第二字段后,根据第一字段与第二字段维护GTID活跃列表;在CN获取到GTID与第二字段后,在DN中的待操作数据行中获取待操作数据行的GTID标识,根据GTID标识、第二字段以及GTID活跃列表判断GTID标识是否处于活跃状态;在GTID标识未处于活跃状态的情况下,根据GTID对待操作数据行进行操作,完成当前事务。通过采用本申请提供的技术方案,有效的减小了分布式数据库的网络负担。
Description
技术领域
本申请涉及分布式数据库领域,尤其涉及一种分布式数据库中全局事务的管理方法及装置。
背景技术
分布式数据库通过将数据分布在不同的数据节点中来减小单一数据节点的压力,提升数据库的整体性能。在分布式数据库中,通常会存在同一事务涉及到不同数据节点的情况,为了保证事务的一致性,需要对分布式数据库进行全局事务管理。
目前,通常通过引入全局事务管理(Global Transaction Manager,GTM)节点进行分布式数据库的全局事务管理,例如在一种分布式数据库中,构建有计算节点(ComputerNode,CN)、数据节点(Data Node,DN)、全局事务管理节点相互配合的架构,在事务开始时,CN从GTM申请事务编号(Global Transaction Identity,GTID),同时GTM将分配给CN的GTID加入到活跃列表中,然后下发到DN,DN处理数据的时候将GTID一并记录;在事务结束时,GTM释放GTID,并且从活跃列表中移除;在部分分片事务失败时,通过GTID来进行所有相关分片事务管理,从而保证事务一致性。
然而,在存在大量事务的场景下,活跃的GTID列表较大,CN从GTM获取活跃的GTID列表很长,网络损耗较大;同时,如果使用多版本并发控制(Mutil Version ConcurrencyControl,MVCC),CN还需要将活跃列表带给DN,这将带来更大的网络流量损耗。综上所述,现有技术中的全局事务管理方法对分布式数据库的网络负担大。
发明内容
本申请提供了一种分布式数据库中全局事务的管理方法及装置,以减小分布式数据库的网络负担。
第一方面,本申请提供了一种全局事务的管理方法,所述方法包括:
在当前事务为写事务的情况下,在GTM中生成所述当前事务对应的GTID、第一字段以及第二字段;其中,所述第一字段用于记录所述GTID的创建操作,所述第二字段用于标识所述GTID与所述第一字段;
发送所述GTID与所述第二字段至CN,并发送所述第一字段与所述第二字段至DN;
在DN获取到所述第一字段与所述第二字段后,根据所述第一字段与所述第二字段维护GTID活跃列表,所述GTID活跃列表包括有多张,各所述GTID活跃列表以所述第二字段为唯一标识;
在CN获取到所述GTID与所述第二字段后,在DN中的待操作数据行中获取所述待操作数据行的GTID标识,根据所述GTID标识、所述第二字段以及所述GTID活跃列表判断所述GTID标识是否处于活跃状态;
在所述GTID标识未处于所述活跃状态的情况下,根据所述GTID对所述待操作数据行进行操作,完成所述当前事务。
第二方面,本申请提供了一种全局事务的管理装置,包括:
生成模块,用于在当前事务为写事务的情况下,在GTM中生成所述当前事务对应的GTID、第一字段以及第二字段;其中,所述第一字段用于记录所述GTID的创建操作,所述第二字段用于标识所述GTID与所述第一字段;
发送模块,用于发送所述GTID与所述第二字段至CN,并发送所述第一字段与所述第二字段至DN;
维护模块,用于在DN获取到所述第一字段与所述第二字段后,根据所述第一字段与所述第二字段维护GTID活跃列表,所述GTID活跃列表包括有多张,各所述GTID活跃列表以所述第二字段为唯一标识;
判断模块,用于在CN获取到所述GTID与所述第二字段后,在DN中的待操作数据行中获取所述待操作数据行的GTID标识,根据所述GTID标识、所述第二字段以及所述GTID活跃列表判断所述GTID标识是否处于活跃状态;
操作模块,用于在所述GTID标识未处于所述活跃状态的情况下,根据所述GTID对所述待操作数据行进行操作,完成所述当前事务。
第三方面,本申请提供了一种电子设备,包括:至少一个通信接口;与所述至少一个通信接口相连接的至少一个总线;与所述至少一个总线相连接的至少一个处理器;与所述至少一个总线相连接的至少一个存储器,其中,所述处理器被配置为用于执行上述第一方面所述的全局事务的管理方法。
第四方面,本申请还提供了一种计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行上述第一方面所述的全局事务的管理方法。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:本申请实施例提供的该方法,在进行分布式事务时,在GTM中生成GTID、第一字段以及第二字段,GTID用于对当前事务进行唯一标识,第一字段用于记录GTID的创建操作,第二字段用于对GTID以及GTID的创建操作进行唯一标识,DN将会从GTM获取第一字段与第二字段,通过第一字段与第二字段维护自身的GTID活跃列表,CN将会从GTM获取GTID与第二字段,通过第二字段与DN的GTID活跃列表对当前事务的待操作数据行的GTID标识进行活跃判断,仅在当前事务的待操作数据行不活跃的情况下对待操作数据行进行操作,避免了其他CN当前正在操作待操作数据行而导致的事务冲突的问题,实现了多分支事务的正常进行。在本申请提供的技术方案中,CN仅需从GTM获取GTID与第二字段即可完成事务,DN仅需从GTM获取第一字段与第二字段即可对存在于DN缓存中的GTID活跃列表的维护,即便在存在大量事务的场景下,也无需相互交互数据量巨大的GTID活跃列表,从而有效的减小了分布式数据库的网络负担。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1为本申请实施例提供的一种全局事务的管理方法的流程示意图。
图2为本申请实施例提供的一种全局事务的管理方法的整体流程图。
图3为本申请实施例提供的一种全局事务的管理装置的结构示意图。
图4为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。当然,它们仅仅为示例,并且目的不在于限制本发明。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。
为了解决现有技术中的全局事务管理方法对分布式数据库的网络负担大的技术问题,本申请提供了一种全局事务的管理方法,以减小分布式数据库的网络负担。
图1为本申请实施例提供的一种全局事务的管理方法的流程示意图,参照图1,该方法包括以下步骤:
S1:在当前事务为写事务的情况下,在GTM中生成当前事务对应的GTID、第一字段以及第二字段;
具体的,在分布式数据库中的任意一个事务开始时,对事务的事务类型进行判断,在当前执行的事务的事务类型为写事务时,即当前事务为向DN中写入数据时,在GTM中生成当前事务对应的GTID、第一字段与第二字段。
在GTM中包含有第一列表与第二列表,GTID在第一列表中生成,第一字段与第二字段在第二列表中生成。GTID用于对事务进行标识,对于分布式数据库中的任意一个事务,其在进行时均唯一对应有一个GTID;第一字段用于对GTID的创建操作进行记录,第二字段用于对由当前事务触发生成的GTID与第一字段进行标识。
在本申请一种可行的实施例中,在GTM中生成当前事务对应的GTID、第一字段以及第二字段具体包括以下步骤:
响应于CN的GTID请求,在GTM的第一列表中生成当前事务对应的GTID;
在GTM的第二列表中分别生成第一字段与第二字段,第一字段包括操作记录字符与操作对象字符,操作记录字符用于记录在第一列表中的创建操作,操作对象字符用于记录在创建操作的操作对象。
具体的,在分布式数据库的事务进行时,CN首先将生成GTID请求,并将GTID请求发送至GTM,GTM响应于GTID请求在第一列表中生成当前事务对应的GTID,并对GTID生成这一操作在第二列表中进行记录,在第二列表中生成第一字段与第二字段。
在第二列表中生成第一字段时,第一字段具体包括操作记录字符与操作对象字符,操作记录字符用于记录在第一列表中的创建操作,操作对象字符用于记录在创建操作的操作对象,即,通过当前创建操作所生成的GTID。
在本申请一种可行的实施例中,通过flag标识生成操作记录字符,flag标识具体为bool值,当flag标识为1时,说明当前在第一列表中创建GTID;当flag标识为0时,说明当前在第一列表中删除GTID。
在本申请一种可行的实施例中,在GTM的第一列表中生成当前事务对应的GTID,包括:
通过第一列表中的自增主键生成当前事务对应的GTID。
具体的,在第一列表中包含有一个非空的自增主键,当需要在第一列表中创建GTID时,通过自增主键的自动递增形成当前事务对应的GTID。该自增主键的字符长度大小根据实际业务需求确定,以无符号INT为例,自增主键可以生成的长度范围为0~232-1。
在本申请一种可行的实施例中,在GTM的第二列表中分别生成第一字段与第二字段,包括:
通过第二列表中的生成函数生成第二字段,生成函数为单调递增函数。
具体的,在第二列表中包含有生成函数,生成函数单调递增,基于GTID的申请的先后顺序,由小至大为GTID分配对应的第二字段。
在本申请一种可能的实施场景中,CN同时向GTM申请多个GTID。在CN同时向GTM申请多个GTID时,在第一列表中创建于CN申请数量相同的GTID,并在第二列表中生成对应的第一字段与第二字段,可以理解的是,在申请批量GTID时,生成的第一字段仅记录为一次操作,但第一字段中的操作对象字符记录了全部的GTID,第二字段与第一字段对应,也只生成一个。
在本申请一种可行的实施例中,GTM包括主GTM与备GTM,其中,主GTM为当前向CN与DN提供服务的GTM,备GTM待机备用,主GTM存在有一个,备GTM存在有至少一个。主GTM与备GTM之间第一列表与第二列表实时同步,当主GTM故障无法正常提供服务时,备GTM取代主GTM提供服务。
S2:发送GTID与第二字段至CN,并发送第一字段与第二字段至DN;
S3:在DN获取到第一字段与第二字段后,根据第一字段与第二字段维护GTID活跃列表;
具体的,GTM在生成GTID、第一字段以及第二字段后,将第一字段与第二字段发送至全部正常分片的DN,DN根据第一字段与第二字段在自身的缓存中维护GTID活跃列表,在DN中同时存在有多个GTID活跃列表,各个GTID活跃列表对应于不同时间节点创建的不同版本的GTID。
在本申请一种可行的实施例中,根据第一字段与第二字段维护GTID活跃列表具体包括:
查找第一GTID活跃列表,第一GTID活跃列表为全部GTID活跃列表中具有最大的第二字段的GTID活跃列表;
根据第一字段中的操作对象字符对第一GTID活跃列表进行修改,在第一GTID活跃列表中添加操作对象字符指示的GTID,以生成第二GTID活跃列表,第二GTID活跃列表以当前事务对应的第二字段作为唯一标识。
具体来说,DN根据第二列表中的每一个第二字段,由小至大创建每个第二字段对应的GTID活跃列表,每个第二字段的GTID活跃列表由上一个第二字段对应的GTID活跃列表经过当前第二字段对应的第一字段记录的GTID的增加或删除操作后生成,每个第二字段对应自己的GTID列表。
例如,在DN上一次接收到第一字段与第二字段后完成了对第一GTID活跃列表的维护,第一GTID活跃列表中记录了当前的活跃的GTID,在DN本次接收到第一字段与第二字段后,根据第一字段对第一GTID活跃列表进行修改,生成当前的第二字段对应的第二GTID活跃列表,完成对GTID活跃列表的维护。
又例如,当前DN的缓存中存在有第二字段为version1的GTID活跃列表,GTID活跃列表version1中包含有GTID A与GTID B,此时DN获取到的第一字段为“GTID C,flag 1#创建GTID C”,第二字段“version2”,则将DN缓存中的GTID活跃列表维护为version2,在GTID活跃列表version2中包含有GTID A、GTID B以及GTID C。
基于上述示例,需要说明的是,在GTID活跃列表维护为version2生成后,GTID活跃列表维护为version1并不会被删除,此时DN中同时存在有GTID活跃列表维护为version1与GTID活跃列表维护为version2。
S4:在CN获取到GTID与第二字段后,在DN中的待操作数据行中获取待操作数据行的GTID标识,根据GTID标识、第二字段以及GTID活跃列表判断GTID标识是否处于活跃状态;
具体的,在DN的每一个数据行中均存在有一个GTID标识,CN根据用户的查询语句访问DN中对应的待操作数据行,获取待操作数据行的GTID标识;在查找到当前待操作数据行的GTID标识后,根据第二字段在DN中查找第二字段对应的GTID活跃列表;判断GTID标识是否存在于第二字段对应的GTID活跃列表中。
在GTID标识存在于第二字段对应的GTID活跃列表的情况下,说明当前待操作数据行正在被操作,当前存在有其他的CN或事务正在对待操作数据行进行操作,判断GTID标识处于活跃状态;在GTID标识不存在于第二字段对应的GTID活跃列表的情况下,说明当前待操作数据行空闲,判断GTID标识不处于活跃状态。
S5:在GTID标识未处于活跃状态的情况下,根据GTID对待操作数据行进行操作,完成当前事务;
具体的,在GTID为未处于当前第二字段对应的GTID活跃列表时,当前待操作数据行空闲,GTID标识未处于活跃状态,此时CN可以在待操作数据行进行操作,执行当前事务。
CN在执行当前事务时,会用CN携带的当前事务对应的GTID对待操作数据行的GTID标识进行修改,表示待操作数据行被CN占用,正在执行事务。
在本申请一种可行的实施例中,在GTID标识处于活跃状态的情况下,间隔设定时间判断GTID标识是否处于活跃状态,直至GTID标识未处于活跃状态,停止判断,再继续执行是上述在GTID标识未处于活跃状态的情况下的对应步骤。
通过本申请提供的技术方案,在进行分布式事务时,在GTM中生成GTID、第一字段以及第二字段,GTID用于对当前事务进行唯一标识,第一字段用于记录GTID的创建操作,第二字段用于对GTID以及GTID的创建操作进行唯一标识,DN将会从GTM获取第一字段与第二字段,通过第一字段与第二字段维护自身的GTID活跃列表,CN将会从GTM获取GTID与第二字段,通过第二字段与DN的GTID活跃列表对当前事务的待操作数据行的GTID标识进行活跃判断,仅在当前事务的待操作数据行不活跃的情况下对待操作数据行进行操作,避免了其他CN当前正在操作待操作数据行而导致的事务冲突的问题,实现了多分支事务的正常进行。在本申请提供的技术方案中,CN仅需从GTM获取GTID与第二字段即可完成事务,DN仅需从GTM获取第一字段与第二字段即可对存在于DN缓存中的GTID活跃列表的维护,即便在存在大量事务的场景下,也无需相互交互数据量巨大的GTID活跃列表,从而有效的减小了分布式数据库的网络负担。
参照图2,对本申请提供的技术方案的整体流程进行了描述,结合图2对本申请提供的技术方案的实施原理进行描述,同时,对本申请提供的技术方案在当前事务执行完成后进行的相关步骤进行描述。
在本申请提供的技术方案中,GTM相当于一种特殊的DN,在GTM中维护的第一列表与第二列表实现了GTID生成以及GTID版本记录的功能。CN基于GTID执行当前事务,并基于第二字段在DN处查找对应版本的GTID活跃列表,仅在当前事务对应的待操作数据行的GTID标识未处于GTID活跃列表时才执行当前事务,避免了事务之间产生冲突;DN基于第一字段与第二字段维护自身缓存中的GTID活跃列表,对事务的相关信息进行记录;通过第一字段与第二字段,CN、GTM与DN之间在进行大量事务时不需要交互数据量巨大的GTID活跃列表,而只需要通过第一字段与第二字段对自身的GTID活跃列表进行维护即可,有效的减小了分布式数据库的网络负担。
在当前事务结束后,CN向GTM发送消息,在第一列表中删除需要释放的GTID,在第二列表中生成用于记录删除操作的第一字段,然后将该第一字段对应的第二字段同步到DN中,以使DN维护的最新版本的GTID活跃列表,最后当前事务结束,继续等待后续事务。
参照图3,与上述方法实施例相对应,本申请还提供了一种全局事务的管理装置,该装置包括:
生成模块301,用于在当前事务为写事务的情况下,在GTM中生成当前事务对应的GTID、第一字段以及第二字段;其中,第一字段用于记录GTID的创建操作,第二字段用于标识GTID与第一字段;
发送模块302,用于发送GTID与第二字段至CN,并发送第一字段与第二字段至DN;
维护模块303,用于在DN获取到第一字段与第二字段后,根据第一字段与第二字段维护GTID活跃列表,GTID活跃列表包括有多张,各GTID活跃列表以第二字段为唯一标识;
判断模块304,用于在CN获取到GTID与第二字段后,在DN中的待操作数据行中获取待操作数据行的GTID标识,根据GTID标识、第二字段以及GTID活跃列表判断GTID标识是否处于活跃状态;
操作模块305,用于在GTID标识未处于活跃状态的情况下,根据GTID对待操作数据行进行操作,完成当前事务。
在本申请一种可行的实施例中,生成模块301包括:
第一生成单元,用于响应于CN的GTID请求,在GTM的第一列表中生成当前事务对应的GTID;
第二生成单元,用于在GTM的第二列表中分别生成第一字段与第二字段,第一字段包括操作记录字符与操作对象字符,操作记录字符用于记录在第一列表中的创建操作,操作对象字符用于记录在创建操作的操作对象。
在本申请一种可行的实施例中,第一生成单元包括:
第一生成子单元,用于通过第一列表中的自增主键生成当前事务对应的GTID。
在本申请一种可行的实施例中,第二生成单元包括:
第二生成子单元,用于通过第二列表中的生成函数生成第二字段,生成函数为单调递增函数。
在本申请一种可行的实施例中,维护模块303包括:
查找单元,用于查找第一GTID活跃列表,第一GTID活跃列表为全部GTID活跃列表中具有最大的第二字段的GTID活跃列表;
修改单元,用于根据第一字段中的操作对象字符对第一GTID活跃列表进行修改,在第一GTID活跃列表中添加操作对象字符指示的GTID,以生成第二GTID活跃列表,第二GTID活跃列表以当前事务对应的第二字段作为唯一标识。
在本申请一种可行的实施例中,判断模块304包括:
查找单元,用于根据第二字段查找第二字段对应的GTID活跃列表;
第一判断单元,用于在GTID标识存在于第二字段对应的GTID活跃列表的情况下,判断GTID标识处于活跃状态;
第二判断单元,用于在GTID标识不存在于第二字段对应的GTID活跃列表的情况下,判断GTID标识不处于活跃状态。
在本申请一种可行的实施例中,该装置还包括:
循环判断模块,用于在GTID标识处于活跃状态的情况下,间隔设定时间判断GTID标识是否处于活跃状态,直至GTID标识未处于活跃状态,停止判断。
如图4所示,本申请实施例提供了一种空调器控制设备,包括处理器401、通信接口402、存储器403和通信总线404,其中,处理器401,通信接口402,存储器403通过通信总线404完成相互间的通信,
存储器403,用于存放计算机程序;
在本申请一个实施例中,处理器401,用于执行存储器403上所存放的程序时,实现前述任意一个方法实施例提供的一种全局事务的管理方法,例如包括:
在当前事务为写事务的情况下,在GTM中生成当前事务对应的GTID、第一字段以及第二字段;其中,第一字段用于记录GTID的创建操作,第二字段用于标识GTID与第一字段;
发送GTID与第二字段至CN,并发送第一字段与第二字段至DN;
在DN获取到第一字段与第二字段后,根据第一字段与第二字段维护GTID活跃列表,GTID活跃列表包括有多张,各GTID活跃列表以第二字段为唯一标识;
在CN获取到GTID与第二字段后,在DN中的待操作数据行中获取待操作数据行的GTID标识,根据GTID标识、第二字段以及GTID活跃列表判断GTID标识是否处于活跃状态;
在GTID标识未处于活跃状态的情况下,根据GTID对待操作数据行进行操作,完成当前事务。
本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如前述任意一个方法实施例提供的一种全局事务的管理方法的步骤。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
应理解的是,文中使用的术语仅出于描述特定示例实施方式的目的,而无意于进行限制。除非上下文另外明确地指出,否则如文中使用的单数形式“一”、“一个”以及“所述”也可以表示包括复数形式。术语“包括”、“包含”、“含有”以及“具有”是包含性的,并且因此指明所陈述的特征、步骤、操作、元件和/或部件的存在,但并不排除存在或者添加一个或多个其它特征、步骤、操作、元件、部件、和/或它们的组合。文中描述的方法步骤、过程、以及操作不解释为必须要求它们以所描述或说明的特定顺序执行,除非明确指出执行顺序。还应当理解,可以使用另外或者替代的步骤。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种全局事务的管理方法,其特征在于,所述方法包括:
在当前事务为写事务的情况下,在GTM中生成所述当前事务对应的GTID、第一字段以及第二字段;其中,所述第一字段用于记录所述GTID的创建操作,所述第二字段用于标识所述GTID与所述第一字段;
发送所述GTID与所述第二字段至CN,并发送所述第一字段与所述第二字段至DN;
在DN获取到所述第一字段与所述第二字段后,根据所述第一字段与所述第二字段维护GTID活跃列表,所述GTID活跃列表包括有多张,各所述GTID活跃列表以所述第二字段为唯一标识;
在CN获取到所述GTID与所述第二字段后,在DN中的待操作数据行中获取所述待操作数据行的GTID标识,根据所述GTID标识、所述第二字段以及所述GTID活跃列表判断所述GTID标识是否处于活跃状态;
在所述GTID标识未处于所述活跃状态的情况下,根据所述GTID对所述待操作数据行进行操作,完成所述当前事务。
2.根据权利要求1所述的方法,其特征在于,在GTM中生成所述当前事务对应的GTID、第一字段以及第二字段,包括:
响应于CN的GTID请求,在GTM的第一列表中生成所述当前事务对应的所述GTID;
在GTM的第二列表中分别生成所述第一字段与所述第二字段,所述第一字段包括操作记录字符与操作对象字符,所述操作记录字符用于记录在所述第一列表中的创建操作,所述操作对象字符用于记录在所述创建操作的操作对象。
3.根据权利要求2所述的方法,其特征在于,在GTM的第一列表中生成所述当前事务对应的所述GTID,包括:
通过所述第一列表中的自增主键生成所述当前事务对应的所述GTID。
4.根据权利要求2所述的方法,其特征在于,在GTM的第二列表中分别生成所述第一字段与所述第二字段,包括:
通过所述第二列表中的生成函数生成所述第二字段,所述生成函数为单调递增函数。
5.根据权利要求2所述的方法,其特征在于,根据所述第一字段与所述第二字段维护GTID活跃列表,包括:
查找第一GTID活跃列表,所述第一GTID活跃列表为全部所述GTID活跃列表中具有最大的所述第二字段的所述GTID活跃列表;
根据所述第一字段中的操作对象字符对所述第一GTID活跃列表进行修改,在所述第一GTID活跃列表中添加所述操作对象字符指示的所述GTID,以生成第二GTID活跃列表,所述第二GTID活跃列表以所述当前事务对应的所述第二字段作为唯一标识。
6.根据权利要求1所述的方法,其特征在于,根据所述GTID标识、所述第二字段以及所述GTID活跃列表判断所述GTID标识是否处于活跃状态,包括:
根据所述第二字段查找所述第二字段对应的所述GTID活跃列表;
在所述GTID标识存在于所述第二字段对应的所述GTID活跃列表的情况下,判断所述GTID标识处于活跃状态;
在所述GTID标识不存在于所述第二字段对应的所述GTID活跃列表的情况下,判断所述GTID标识不处于活跃状态。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述GTID标识处于所述活跃状态的情况下,间隔设定时间判断所述GTID标识是否处于活跃状态,直至所述GTID标识未处于所述活跃状态,停止判断。
8.一种全局事务的管理装置,其特征在于,所述装置包括:
生成模块,用于在当前事务为写事务的情况下,在GTM中生成所述当前事务对应的GTID、第一字段以及第二字段;其中,所述第一字段用于记录所述GTID的创建操作,所述第二字段用于标识所述GTID与所述第一字段;
发送模块,用于发送所述GTID与所述第二字段至CN,并发送所述第一字段与所述第二字段至DN;
维护模块,用于在DN获取到所述第一字段与所述第二字段后,根据所述第一字段与所述第二字段维护GTID活跃列表,所述GTID活跃列表包括有多张,各所述GTID活跃列表以所述第二字段为唯一标识;
判断模块,用于在CN获取到所述GTID与所述第二字段后,在DN中的待操作数据行中获取所述待操作数据行的GTID标识,根据所述GTID标识、所述第二字段以及所述GTID活跃列表判断所述GTID标识是否处于活跃状态;
操作模块,用于在所述GTID标识未处于所述活跃状态的情况下,根据所述GTID对所述待操作数据行进行操作,完成所述当前事务。
9.一种电子设备,其特征在于,包括:至少一个通信接口;与所述至少一个通信接口相连接的至少一个总线;与所述至少一个总线相连接的至少一个处理器;与所述至少一个总线相连接的至少一个存储器,其中,所述处理器被配置为能够实现权利要求1-7中任一所述的方法。
10.一种计算机存储介质,其特征在于,存储有计算机可执行指令,所述计算机可执行指令用于执行如权利要求1-7中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311706528.6A CN117762574A (zh) | 2023-12-12 | 2023-12-12 | 分布式数据库中全局事务的管理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311706528.6A CN117762574A (zh) | 2023-12-12 | 2023-12-12 | 分布式数据库中全局事务的管理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117762574A true CN117762574A (zh) | 2024-03-26 |
Family
ID=90325020
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311706528.6A Pending CN117762574A (zh) | 2023-12-12 | 2023-12-12 | 分布式数据库中全局事务的管理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117762574A (zh) |
-
2023
- 2023-12-12 CN CN202311706528.6A patent/CN117762574A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9779128B2 (en) | System and method for massively parallel processing database | |
CN102831156B (zh) | 一种云计算平台上的分布式事务处理方法 | |
US11429599B2 (en) | Method and apparatus for updating database by using two-phase commit distributed transaction | |
CN112084258A (zh) | 一种数据同步方法和装置 | |
CN113010549B (zh) | 基于异地多活系统的数据处理方法、相关设备及存储介质 | |
CN102333029A (zh) | 一种服务器集群系统中的路由方法 | |
US20110218971A1 (en) | System, Method And Computer Program Product For Managing Caches | |
CN113438275B (zh) | 数据迁移方法、装置、存储介质及数据迁移设备 | |
CN113094430B (zh) | 一种数据处理方法、装置、设备以及存储介质 | |
CN113407639B (zh) | 数据处理方法、装置、系统及存储介质 | |
CN111399753B (zh) | 写入图片的方法和装置 | |
US7752225B2 (en) | Replication and mapping mechanism for recreating memory durations | |
EP3649532B1 (en) | Methods, systems, databases and network nodes of data communication networks for handling data posts | |
CN112000850B (zh) | 进行数据处理的方法、装置、系统及设备 | |
CN112711606A (zh) | 数据库访问方法、装置、计算机设备和存储介质 | |
CN112632093A (zh) | 工单处理方法、设备、系统、存储介质及程序产品 | |
CN112749172A (zh) | 一种缓存与数据库之间的数据同步方法及系统 | |
CN117762574A (zh) | 分布式数据库中全局事务的管理方法及装置 | |
CN110019259B (zh) | 分布式索引服务引擎的数据更新方法、装置及存储介质 | |
CN108694219B (zh) | 一种数据处理方法及装置 | |
CN110019300A (zh) | 分布式数据库的数据访问方法及其系统 | |
CN114238518B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN114629783B (zh) | 状态监控方法、系统、设备及计算机可读存储介质 | |
CN114116732B (zh) | 处理事务的方法、装置、存储装置以及服务器 | |
CN112835911B (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 |