[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

CN114297291B - 一种基于事务合并的并行执行方法及设备 - Google Patents

一种基于事务合并的并行执行方法及设备 Download PDF

Info

Publication number
CN114297291B
CN114297291B CN202111503817.7A CN202111503817A CN114297291B CN 114297291 B CN114297291 B CN 114297291B CN 202111503817 A CN202111503817 A CN 202111503817A CN 114297291 B CN114297291 B CN 114297291B
Authority
CN
China
Prior art keywords
transaction
lsn
execution
thread
parallel
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
Application number
CN202111503817.7A
Other languages
English (en)
Other versions
CN114297291A (zh
Inventor
孙峰
余院兰
彭青松
刘启春
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Dream Database Co ltd
Original Assignee
Wuhan Dream Database Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan Dream Database Co ltd filed Critical Wuhan Dream Database Co ltd
Priority to CN202111503817.7A priority Critical patent/CN114297291B/zh
Publication of CN114297291A publication Critical patent/CN114297291A/zh
Application granted granted Critical
Publication of CN114297291B publication Critical patent/CN114297291B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种基于事务合并的并行执行方法及设备。其方法部分主要包括:将单事务合并为多事务且设置多事务的提交LSN、第一事务A以及并行LSN;将第一事务A设置为当前事务B;通过判断当前事务B的下一个操作以及查找并行LSN小于当前待执行操作LSN的执行线程C,来进入相对应的步骤;判断当前单事务是否为最后一个单事务,若是则执行线程提交操作,若不是则取下一个单事务设置为第一事务A并重新进入设置当前事务B步骤。本发明采用的方法可以优化事务合并以后那些无冲突数据同步操作的并行度,从而提升数据同步的性能。

Description

一种基于事务合并的并行执行方法及设备
技术领域
本发明涉及数据库数据处理技术领域,特别是涉及一种基于事务合并的并行执行方法及设备。
背景技术
目前基于日志解析的异构数据库复制技术应用广泛。这种技术在源端捕捉数据库的日志,解析出日志中的INSERT、UPDATE、DELETE操作,然后发送到目标端,目标端对日志信息进行逆向生成,恢复成SQL语句方式,然后使用数据库通用接口,应用到目标数据库,实现数据复制。因此,在数据库实时复制过程中,目标端的执行效率是影响数据同步性能的重要因素之一。
目标端数据库上执行同步事务时,需要以事务的提交顺序为基准来执行事务操作,不然前后有关联的操作执行时就会发生错误,从而影响同步的正确性。为了追求数据同步的性能,执行同步事务时往往会采取事务合并的策略,把小事务合并为大事务,不仅可以通过合并不同事务的相同操作来减少执行的次数,还可以减少事务提交的次数,从而达到提升同步性能的目的。另外还可以通过增加执行事务的线程数,采用多线程并行的策略同时对多个合并以后的事务进行入库,进一步的提升同步的性能。但是在同时采用了事务合并和并行执行的策略以后,为了防范和解决并行执行时带来的数据冲突问题,现有的方案都是按事务提交的顺序来执行操作,但这在一定程度上反而降低了并行执行的效率。
鉴于此,如何克服现有技术所存在的缺陷,同时保证合并事务的高效执行以及数据同步的一致性,是本技术领域待解决的难题。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供一种基于事务合并的并行执行方法及设备。为了陈述方便,本发明源端日志中的事务称为“单事务”,多个单事务合并以后形成的事务称为“多事务”。事务合并和多线程并行执行是数据同步提升同步性能的常用手段,本发明以第一执行区间(并行LSN之前的区间)为例来定制一种并行执行的策略,在按单事务提交顺序执行时,如果当前单事务操作执行受到其它并行执行事务的约束而要等待时,跳过当前单事务的执行,取下一个单事务的操作进行判断它是否满足并行执行的条件,如果满足,则执行,否则同样跳过,一直遍历到最后一个单事务,以达到提升同步性能的目的。
本发明实施例采用如下技术方案:
第一方面,本发明提供了一种基于事务合并的并行执行方法,包括:
将单事务合并为多事务且设置多事务的提交LSN、第一事务A以及并行LSN;
设置当前事务B步骤:将第一事务A设置为当前事务B;
通过判断当前事务B的下一个操作以及查找并行LSN小于当前待执行操作LSN的执行线程C,来进入相对应的步骤;
线程提交步骤:判断当前单事务是否为最后一个单事务,若是则执行线程提交操作,若不是则取下一个单事务设置为第一事务A并重新进入设置当前事务B步骤。
进一步的,还包括部署准备步骤:
在源端数据库以及目标端数据库均部署数据同步服务;
目标端数据同步服务启动后,初始化待执行链表、执行线程、唤醒链表以及执行线程链表;
目标端数据同步服务接收到源端操作后,按操作的事务ID进行分类管理,当某个事务提交以后,则将该事务按提交操作的LSN大小顺序存入待执行链表。
进一步的,所述将单事务合并为多事务且设置多事务的提交LSN、第一事务A以及并行LSN具体包括:
执行线程从待执行链表中按事务提交LSN的顺序摘取N个单事务合并成一个多事务,并将最后一个单事务的提交LSN设置为多事务的提交LSN,然后根据多事务的提交LSN在执行线程链表中进行注册;
执行线程将多事务中的下一个单事务设置为第一事务A,并将第一个单事务的提交LSN设为并行LSN。
进一步的,所述通过判断当前事务B的下一个操作以及查找并行LSN小于当前待执行操作LSN的执行线程C,来进入相对应的步骤具体包括:
第一提交操作判断步骤:根据当前事务B的下一个操作的操作类型来选择进入执行线程C查找步骤或线程提交步骤;
执行线程C查找步骤:通过查找并行LSN小于当前待执行操作LSN的执行线程C来进入第一并行执行步骤或循环判断步骤;
第一并行执行步骤:执行当前操作后跳到第一提交操作判断步骤;
循环判断步骤:对所有单事务进行循环判断以确定是否可以并行执行。
进一步的,所述第一提交操作判断步骤具体包括:
提取当前事务B的下一个操作,判断提取的操作是否为提交操作;
若是提交操作则进入线程提交步骤,若不是则进入执行线程C查找步骤。
进一步的,所述执行线程C查找步骤具体包括:
获取当前待执行操作LSN,在执行线程链表中向前查找并行LSN小于该待执行操作LSN的执行线程C;
若找到,则进入循环判断步骤,若未找到,则进入第一并行执行步骤。
进一步的,所述循环判断步骤具体包括:
回退步骤:回退当前操作位置并将当前事务B指向下一个单事务,然后进入第二提交操作判断步骤;
第二提交操作判断步骤:提取当前事务B的下一个操作并判断提取的操作是否是提交操作,若是则进入回退步骤,若不是则进入并行LSN判断步骤;
并行LSN判断步骤:判断排在当前执行线程之前的执行线程的并行LSN是否都大于当前待执行操作LSN,若是则进入第二并行执行步骤,若否则进入回退步骤;
第二并行执行步骤:执行当前操作后进入第二提交操作判断步骤。
进一步的,在所述回退步骤中将当前事务B指向下一个单事务时,若没有下一个单事务,则将第一事务A设置为当前事务B,并将当前执行线程添加到执行线程C的唤醒链表,以等待执行线程C提交后再唤醒。
进一步的,在所述线程提交步骤中执行线程提交操作时,还将该执行线程的唤醒链表中等待的其它执行线程全部唤醒,然后将该执行线程从执行线程链表中移除。
另一方面,本发明提供了一种基于事务合并的并行执行设备,具体为:包括至少一个处理器和存储器,至少一个处理器和存储器之间通过数据总线连接,存储器存储能被至少一个处理器执行的指令,指令在被处理器执行后,用于完成第一方面中的基于事务合并的并行执行方法。
与现有技术相比,本发明的有益效果在于:
首先,两个执行线程并行执行多事务时,采用单事务的提交LSN来划分出不同的并行区间,在划分出的第一个并行区间(也即并行LSN之前的区间),两个执行线程中操作LSN落在此区间的操作可以无条件的并行,因为这些操作访问的资源并不冲突。
其次,在采用了事务合并策略以后,多个单事务合并成一个多事务,多事务在执行时如果按事务合并的顺序挨个执行单事务的操作,那么在碰到第一个单事务操作不满足并行执行条件后这个执行过程就会被挂起,在这种情况下,排在后面的单事务中那些满足并行执行的操作就失去了并行执行的机会。本发明针对这种情况做了针对性的优化,在发现操作不满足并行执行的条件时,把这个操作回退,取下一个单事务,判断它是否有满足并行执行条件的操作,如果有,则执行,重复这个过程,一直到最后一个单事务。这种方案可以优化事务合并以后那些无冲突数据同步操作的并行度,从而提升数据同步的性能,能同时保证合并事务的高效执行以及数据同步的一致性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例1提供的一种基于事务合并的并行执行方法流程图;
图2为本发明实施例1提供的部署准备步骤具体流程图;
图3为本发明实施例1提供的步骤100具体流程图;
图4为本发明实施例1提供的步骤300具体流程图;
图5为本发明实施例1提供的步骤400具体流程图;
图6为本发明实施例1提供的步骤600具体流程图;
图7为本发明实施例1提供的具体的事务执行流程图;
图8为本发明实施例3提供的一种基于事务合并的并行执行设备结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明是一种特定功能系统的体系结构,因此在具体实施例中主要说明各结构模组的功能逻辑关系,并不对具体软件和硬件实施方式做限定。
此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。下面就参考附图和实施例结合来详细说明本发明。
实施例1:
如图1所示,本发明实施例提供一种基于事务合并的并行执行方法,具体步骤如下。
步骤100:将单事务合并为多事务且设置多事务的提交LSN、第一事务A以及并行LSN。
步骤200(设置当前事务B步骤):将第一事务A设置为当前事务B。该步骤中当前事务B指的是当前正在提取操作并准备执行的单事务。
步骤300-步骤600:通过判断当前事务B的下一个操作以及查找并行LSN小于当前待执行操作LSN的执行线程C,来进入相对应的步骤。
步骤700(线程提交步骤):判断当前单事务是否为最后一个单事务,若是则执行线程提交操作,若不是则取下一个单事务设置为第一事务A并重新进入设置当前事务B步骤。
上述步骤300-步骤600具体包括步骤300、步骤400、步骤500以及步骤600。各步骤如下:
步骤300(第一提交操作判断步骤):根据当前事务B的下一个操作的操作类型来选择进入执行线程C查找步骤或线程提交步骤。
步骤400(执行线程C查找步骤):通过查找并行LSN小于当前待执行操作LSN的执行线程C来进入第一并行执行步骤或循环判断步骤。
步骤500(第一并行执行步骤):执行当前操作后跳到第一提交操作判断步骤。在第一提交操作判断步骤中继续当前事务B的下一个操作的判断。
步骤600(循环判断步骤):对所有单事务进行循环判断以确定是否可以并行执行。
通过上述步骤100-步骤700,本发明实施例通过查找并行LSN小于当前待执行操作LSN的执行线程,以及对所有单事务进行循环判断,来决定是否对当前操作进行并行执行。上述方案由于执行线程执行的多事务中存在多个单事务,第一个单事务的LSN为并行LSN,后提交事务中的操作,如果操作的LSN小于这个并行LSN就可以无条件的执行。在多事务执行时,遍历多事务中的每个单事务,把这些符合条件的操作找出,就可以并行执行来提升数据同步的效率。这种方案可以优化事务合并以后那些无冲突数据同步操作的并行度,从而提升数据同步的性能,能同时保证合并事务的高效执行以及数据同步的一致性。
在本优选实施例中,还包括部署准备步骤,如图2所示,部署准备步骤具体包括:
步骤10:在源端数据库以及目标端数据库均部署数据同步服务。该步骤中,在源端数据库中部署数据同步服务的日志解析模块,负责解析日志操作,在目标端数据库中部署数据同步接收服务,负责接收源端数据同步发过来的操作并入库。
步骤20:目标端数据同步服务启动后,初始化待执行链表、执行线程、唤醒链表以及执行线程链表。该步骤中,待执行链表用于将待执行的单事务按事务提交操作的LSN大小顺序存放在该链表中,等待执行入库。每个执行线程用于从待执行链表中提取多个单事务合并成多事务,把最后一个单事务的提交LSN设为该多事务的提交LSN,然后执行入库,另外,每个执行线程还需要初始化一个唤醒链表,用来存放那些等待自己提交后再唤醒的执行线程。执行线程链表用于将执行线程按当前待执行多事务提交LSN的大小先后顺序在该链表中进行注册,注册完成以后才能开始执行多事务的操作。
步骤30:目标端数据同步服务接收到源端操作后,按操作的事务ID进行分类管理,当某个事务提交以后,将该事务按提交操作的LSN大小顺序存入待执行链表。
如图3所示,在本优选实施例中,步骤100(将单事务合并为多事务且设置多事务的提交LSN、第一事务A以及并行LSN)具体包括:
步骤101:执行线程从待执行链表中按事务提交LSN的顺序摘取N个单事务合并成一个多事务,并将最后一个单事务的提交LSN设置为多事务的提交LSN,然后根据多事务的提交LSN在执行线程链表中进行注册。
步骤102:执行线程将多事务中的下一个单事务设置为第一事务A,并将第一个单事务的提交LSN设为并行LSN。
在本优选实施例中,并行LSN是指:在执行线程链表中排在该线程之后的执行线程,它们准备执行的操作LSN如果小于这个并行LSN,那就可以并行执行,因为这些操作在源端执行时也是并行的。
在本优选实施例中,第一事务A指的是多事务中还未执行完的第一个单事务,如果某个单事务已经执行完了,让就第一事务A顺着向后移,指向它的下一个单事务。
在本优选实施例中,由于执行线程执行的是多个单事务合并而成的多事务,那么它在提取事务时,要按多事务中合并的顺序来执行单事务。
如图4所示,在本优选实施例中,步骤300(第一提交操作判断步骤)具体包括:
步骤301:提取当前事务B的下一个操作,判断提取的操作是否为提交操作。
步骤302:若是提交操作则进入线程提交步骤,若不是则进入执行线程C查找步骤。
如图5所示,在本优选实施例中,步骤400(执行线程C查找步骤)具体包括:
步骤401:获取当前待执行操作LSN,在执行线程链表中向前查找并行LSN小于该待执行操作LSN的执行线程C。
步骤402:若找到,则进入循环判断步骤,若未找到,则进入第一并行执行步骤。
如图6所示,在本优选实施例中,步骤600(循环判断步骤)具体包括:
步骤601(回退步骤):回退当前操作位置并将当前事务B指向下一个单事务,然后进入第二提交操作判断步骤。该步骤中,需要回退提取当前事务B提取操作的位置到上一个位置,并把当前事务B指向下一个单事务,如果无下一个单事务,则将第一事务A设置为当前事务B,然后把当前执行线程添加到执行线程C的唤醒链表,以等待执行线程C提交后再唤醒。
在本优选实施例中,在尝试执行完所有单事务中符合并行执行条件的操作以后,就需要把当前事务B的位置重置到第一事务A所在的位置,然后挂起,等唤醒以后,就可以继续下一个循环,直到多事务中所有的操作都执行完成。
步骤602(第二提交操作判断步骤):提取当前事务B的下一个操作并判断提取的操作是否是提交操作,若是则进入回退步骤,若不是则进入并行LSN判断步骤。
步骤603(并行LSN判断步骤):判断排在当前执行线程之前的执行线程的并行LSN是否都大于当前待执行操作LSN,若是则进入第二并行执行步骤,若否则进入回退步骤。该步骤中,需先获取当前待执行操作LSN,然后在执行线程链表中向前判断排在当前执行线程之前的执行线程的并行LSN是否都大于该当前待执行操作LSN。
步骤604(第二并行执行步骤):执行当前操作后进入第二提交操作判断步骤。在第二提交操作判断步骤中继续提取当前事务B的下一个操作以进行判断。
在本优选实施例中,步骤700(线程提交步骤)中在执行线程提交操作后,还将该执行线程的唤醒链表中等待的其它执行线程全部唤醒,然后将该执行线程从执行线程链表中移除,以完成多事务的执行。
以上为对本实施例提供的方法的各个步骤的详细说明,而这些步骤合为一体后具体的事务执行流程则如图7所示,图7的具体事务执行流程如下:开始执行事务;合并单事务为多事务并注册到执行线程链表;设置第一个单事务的提交LSN为并行LSN;设置第一个事务A(最开始的第一事务A)为下一个待处理的单事务和当前事务B;提取当前事务B的下一个操作并判断它是否是提交操作;若是提交操作则再判断是否是最后一个单事务,若是最后一个单事务则执行提交并把唤醒链表中的执行线程全部唤醒,然后结束该多事务的执行,若不是最后一个单事务则回到设置第一个事务A为下一个待处理的单事务和当前事务B的步骤;若当前操作不是提交操作,则判断当前的执行LSN是否都小于之前执行线程的并行LSN,若都小于则执行操作入库并回到提取当前事务B的下一个操作并判断它是否是提交操作的步骤,若不是都小于则回退当前操作位置并把当前事务B指向下一个单事务;然后判断是否是最后一个单事务,若是则重置当前事务B指向到第一事务A所指的单事务,然后添加到冲突执行线程(也就是前面判断中当前执行LSN大于其并行LSN的某个执行线程)的唤醒链表以等待唤醒,若不是最后一个单事务,则第二次提取当前事务B的下一个操作,然后判断它是否是提交操作,若是则回到回退当前操作位置的步骤,若不是提交操作则再次判断当前的执行LSN是否都小于之前执行线程的并行LSN,若是都小于则执行操作入库并回到第二次提取当前事务B的下一个操作的步骤,若不是都小于则回到回退当前操作位置的步骤。
综上所述,在本实施例中,两个执行线程并行执行多事务时,采用单事务的提交LSN来划分出不同的并行区间,在划分出的第一个并行区间(也即并行LSN之前的区间),两个执行线程中操作LSN落在此区间的操作可以无条件的并行,因为这些操作访问的资源并不冲突。其次,在采用了事务合并策略以后,多个单事务合并成一个多事务,多事务在执行时如果按事务合并的顺序挨个执行单事务的操作,那么在碰到第一个单事务操作不满足并行执行条件后这个执行过程就会被挂起,在这种情况下,排在后面的单事务中那些满足并行执行的操作就失去了并行执行的机会。本实施例针对这种情况做了针对性的优化,在发现操作不满足并行执行的条件时,把这个操作回退,取下一个单事务,判断它是否有满足并行执行条件的操作,如果有,则执行,重复这个过程,一直到最后一个单事务。这种方案可以优化事务合并以后那些无冲突数据同步操作的并行度,从而提升数据同步的性能,能同时保证合并事务的高效执行以及数据同步的一致性。
实施例2:
基于实施例1提供的基于事务合并的并行执行方法,本实施例2通过一个具体的应用场景来对本发明进行更详细的说明。
本实施例中,以源端数据库表T1(ID INT,DATA INT)为例,它存在3行数据,它的数据在数据库中分布如下:
ID列 DATA列
1 1
2 2
3 3
源端有如下日志操作:
Figure BDA0003402644620000111
Figure BDA0003402644620000121
具体的,基于上述应用场景,本实施例2基于实施例1所体现的执行线程的建立步骤如下:
1.创建两个执行线程A和B。
2.其中执行线程A提取单事务ID为1和2的事务合并成一个多事务,把单事务2的提交LSN 6作来该多事务的提交LSN,并在执行线程链表中注册。
3.执行线程B提取单事务ID为3和4的事务合并成一个多事务,把单事务4的提交LSN 8作来该多事务的提交LSN,并在执行线程链表中注册,这时,执行线程链表中已经存在了执行线程A,由于B的提交LSN比A大,所以在执行线程链表中A排在B的前面。
4.执行线程A根据第一个单事务的提交LSN划分出并行区间[1-3],并把第一个单事务的提交LSN 3设置为并行LSN。
5.执行线程B根据第一单事务的提交LSN划分出并行区间[6-7],并把第一个单事务的提交LSN 7设置为并行LSN。
6.执行线程A和B开始并行执行。
以上执行线程A和B建立且完成准备工作后,正式进入并行执行阶段,该阶段的执行流程参考如下表格:
Figure BDA0003402644620000122
Figure BDA0003402644620000131
Figure BDA0003402644620000141
上述的这个例子在现有的方案中,单事务合并成多事务的情况下,执行线程B中单事务4的第一个操作需要等到执行线程A提交以后才能开始执行,因为执行线程B按照事务合并事务的顺序来执行时会卡在单事务3的操作上,单事务3中的操作要等单事务1执行并提交以后才能开始,现在的方案中串行执行可以保证数据同步一致性但是牺牲了同步的性能。
本发明该实施例从上面的并行执行的流程中可以看出,执行线程B执行单事务3时,发现它的第一个操作LSN为5,大于执行线程A的并行LSN3,所以先回退这个操作,然后对下一个单事务4进行执行,而单事务4第一个操作LSN为2,它小于执行线程A的并行LSN 3,所以可以无条件的并行,这就是提升同步性能的一个点,依次类推,遍历完所有单事务以后再把自己添加到了执行线程A的唤醒链表中,等执行线程A提交以后再次执行有冲突的单事务3中的操作,从而保证了并行执行出错时数据同步的一致性。
实施例3:
在上述实施例1至实施例2提供的基于事务合并的并行执行方法的基础上,本发明还提供了一种可用于实现上述方法的基于事务合并的并行执行设备,如图8所示,是本发明实施例的设备架构示意图。本实施例的基于事务合并的并行执行设备包括一个或多个处理器21以及存储器22。其中,图8中以一个处理器21为例。
处理器21和存储器22可以通过总线或者其他方式连接,图8中以通过总线连接为例。
存储器22作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如实施例1至实施例2中的基于事务合并的并行执行方法。处理器21通过运行存储在存储器22中的非易失性软件程序、指令以及模块,从而执行基于事务合并的并行执行设备的各种功能应用以及数据处理,即实现实施例1至实施例2的基于事务合并的并行执行方法。
存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器22可选包括相对于处理器21远程设置的存储器,这些远程存储器可以通过网络连接至处理器21。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
程序指令/模块存储在存储器22中,当被一个或者多个处理器21执行时,执行上述实施例1至实施例2中的基于事务合并的并行执行方法,例如,执行以上描述的图1至图7所示的各个步骤。
本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ReadOnlyMemory,简写为:ROM)、随机存取存储器(RandomAccessMemory,简写为:RAM)、磁盘或光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种基于事务合并的并行执行方法,其特征在于,包括:
将单事务合并为多事务且设置多事务的提交LSN、第一事务A以及并行LSN;具体的,执行线程从待执行链表中按事务提交LSN的顺序摘取N个单事务合并成一个多事务,并将最后一个单事务的提交LSN设置为多事务的提交LSN,然后根据多事务的提交LSN在执行线程链表中进行注册;执行线程将多事务中的下一个单事务设置为第一事务A,并将第一个单事务的提交LSN设为并行LSN;
设置当前事务B步骤:将第一事务A设置为当前事务B;
通过判断当前事务B的下一个操作以及查找并行LSN小于当前待执行操作LSN的执行线程C,来进入相对应的步骤;具体的,第一提交操作判断步骤:根据当前事务B的下一个操作的操作类型来选择进入执行线程C查找步骤或线程提交步骤;执行线程C查找步骤:通过查找并行LSN小于当前待执行操作LSN的执行线程C来进入第一并行执行步骤或循环判断步骤;第一并行执行步骤:执行当前操作后跳到第一提交操作判断步骤;循环判断步骤:对所有单事务进行循环判断以确定是否可以并行执行;
线程提交步骤:判断当前单事务是否为最后一个单事务,若是则执行线程提交操作,若不是则取下一个单事务设置为第一事务A并重新进入设置当前事务B步骤。
2.根据权利要求1所述的基于事务合并的并行执行方法,其特征在于,还包括部署准备步骤:
在源端数据库以及目标端数据库均部署数据同步服务;
目标端数据同步服务启动后,初始化待执行链表、执行线程、唤醒链表以及执行线程链表;
目标端数据同步服务接收到源端操作后,按操作的事务ID进行分类管理,当某个事务提交以后,则将该事务按提交操作的LSN大小顺序存入待执行链表。
3.根据权利要求1所述的基于事务合并的并行执行方法,其特征在于,所述第一提交操作判断步骤具体包括:
提取当前事务B的下一个操作,判断提取的操作是否为提交操作;
若是提交操作则进入线程提交步骤,若不是则进入执行线程C查找步骤。
4.根据权利要求3所述的基于事务合并的并行执行方法,其特征在于,所述执行线程C查找步骤具体包括:
获取当前待执行操作LSN,在执行线程链表中向前查找并行LSN小于该待执行操作LSN的执行线程C;
若找到,则进入循环判断步骤,若未找到,则进入第一并行执行步骤。
5.根据权利要求4所述的基于事务合并的并行执行方法,其特征在于,所述循环判断步骤具体包括:
回退步骤:回退当前操作位置并将当前事务B指向下一个单事务,然后进入第二提交操作判断步骤;
第二提交操作判断步骤:提取当前事务B的下一个操作并判断提取的操作是否是提交操作,若是则进入回退步骤,若不是则进入并行LSN判断步骤;
并行LSN判断步骤:判断排在当前执行线程之前的执行线程的并行LSN是否都大于当前待执行操作LSN,若是则进入第二并行执行步骤,若否则进入回退步骤;
第二并行执行步骤:执行当前操作后进入第二提交操作判断步骤。
6.根据权利要求5所述的基于事务合并的并行执行方法,其特征在于,在所述回退步骤中将当前事务B指向下一个单事务时,若没有下一个单事务,则将第一事务A设置为当前事务B,并将当前执行线程添加到执行线程C的唤醒链表,以等待执行线程C提交后再唤醒。
7.根据权利要求1-6任一所述的基于事务合并的并行执行方法,其特征在于,在所述线程提交步骤中执行线程提交操作时,还将该执行线程的唤醒链表中等待的其它执行线程全部唤醒,然后将该执行线程从执行线程链表中移除。
8.一种基于事务合并的并行执行设备,其特征在于:
包括至少一个处理器和存储器,所述至少一个处理器和存储器之间通过数据总线连接,所述存储器存储能被所述至少一个处理器执行的指令,所述指令在被所述处理器执行后,用于完成权利要求1-7中任一项所述的基于事务合并的并行执行方法。
CN202111503817.7A 2021-12-09 2021-12-09 一种基于事务合并的并行执行方法及设备 Active CN114297291B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111503817.7A CN114297291B (zh) 2021-12-09 2021-12-09 一种基于事务合并的并行执行方法及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111503817.7A CN114297291B (zh) 2021-12-09 2021-12-09 一种基于事务合并的并行执行方法及设备

Publications (2)

Publication Number Publication Date
CN114297291A CN114297291A (zh) 2022-04-08
CN114297291B true CN114297291B (zh) 2023-02-03

Family

ID=80967274

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111503817.7A Active CN114297291B (zh) 2021-12-09 2021-12-09 一种基于事务合并的并行执行方法及设备

Country Status (1)

Country Link
CN (1) CN114297291B (zh)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6745209B2 (en) * 2001-08-15 2004-06-01 Iti, Inc. Synchronization of plural databases in a database replication system
JP2007219598A (ja) * 2006-02-14 2007-08-30 Nippon Telegr & Teleph Corp <Ntt> 多重化データベースシステム及びその同期化方法、データベースサーバ、並びに、データベースサーバプログラム
CN107026880A (zh) * 2016-02-01 2017-08-08 北京京东尚科信息技术有限公司 数据同步方法和装置
CN110597663A (zh) * 2019-09-16 2019-12-20 阿里巴巴集团控股有限公司 一种事务处理方法及装置
CN111475480B (zh) * 2020-04-13 2023-08-15 上海达梦数据库有限公司 一种日志处理方法及系统
CN111930692B (zh) * 2020-05-28 2022-05-13 武汉达梦数据库股份有限公司 一种基于日志解析同步的事务合并执行方法及装置
CN111858503B (zh) * 2020-06-04 2023-03-28 武汉达梦数据库股份有限公司 一种基于日志解析同步的并行执行方法和数据同步系统

Also Published As

Publication number Publication date
CN114297291A (zh) 2022-04-08

Similar Documents

Publication Publication Date Title
CN111858626B (zh) 一种基于并行执行的数据同步的方法和装置
US20100332471A1 (en) Bloom Bounders for Improved Computer System Performance
CN103995691B (zh) 基于事务的服务状态一致性维护方法
US20140040208A1 (en) Early release of transaction locks based on tags
CN101807144A (zh) 一种前瞻多线程并行执行优化方法
CN112035222B (zh) 一种基于日志解析同步的事务操作合并执行方法及装置
CN111694798B (zh) 一种基于日志解析的数据同步方法及数据同步系统
CN111858503B (zh) 一种基于日志解析同步的并行执行方法和数据同步系统
CN114297291B (zh) 一种基于事务合并的并行执行方法及设备
CN114296886B (zh) 一种基于范围行锁的并行执行方法及设备
CN114296885A (zh) 一种基于事务合并的并行执行方法及设备
US11269693B2 (en) Method, apparatus, and electronic device for improving CPU performance
CN111858504B (zh) 基于日志解析同步的操作合并执行方法和数据同步系统
CN105045563B (zh) 一种推测嵌套软件事务存储的冲突管理方法
CN111930692B (zh) 一种基于日志解析同步的事务合并执行方法及装置
CN110990363A (zh) 一种分布式数据库多线程协同事务日志回放方法、系统
CN114296887A (zh) 一种基于事务合并的并行执行方法及设备
CN107608662B (zh) 基于MongoDB的分布式计时系统
CN109753314B (zh) 一种可配置的流程自动执行方法及系统
CN117707798A (zh) 多线程并发状态下的死锁消除方法、装置、设备及介质
CN102063291B (zh) 一种前瞻线程的多级并行执行方法
CN111930693B (zh) 一种基于日志解析同步的事务合并执行方法及装置
CN111858505B (zh) 一种基于日志解析同步的并行执行方法和数据同步系统
CN109710690B (zh) 一种业务驱动计算方法及系统
Solaiman et al. Later validation/earlier write: Concurrency control for resource-constrained systems with real-time properties

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