一种分组执行的数据同步方法和装置与流程

文档序号:36722462发布日期:2024-01-16 12:26阅读:21来源:国知局
一种分组执行的数据同步方法和装置与流程

本发明涉及数据库同步,特别是涉及一种分组执行的数据同步方法和装置。


背景技术:

1、数据实时同步是以事务为单位进行下发和执行的,执行的最小并发粒度是事务。其中,数据同步是将源端数据库的变化数据在尽可能短的时间内复制到目的端数据库的过程;事务是访问并可能操作各种数据项的一个数据库操作序列,这些数据库操作要么全部执行,要么全部不执行,是一个不可分割的工作单位,事务由事务开始和事务结束之间执行的全部数据库操作组成。在解析日志时,以事务为单位缓存事务信息和事务操作记录;事务操作指事务包含的数据库操作。当日志解析到事务的提交(commit)操作时,将对应的待提交事务的信息下发给执行端,执行端从缓存中遍历与该事务相关的所有的事务操作,进行执行入库。其中,入库为将某个事务操作在目的端数据库执行,以实现数据同步。

2、现有技术的数据同步方式为,对事务中的事务操作按表分组执行,但不考虑分组调整和执行优先级。分组规则无法调整,一旦开始进行数据同步就无法修改分组规则,且事务之间依赖复杂,便利性和容错率较低,易引发同步服务运行错误,存在依赖的事务的执行顺序严格按scn(system change number,系统修订号)的大小顺序进行,增加了等待时间,导致同步效率较低。其中,若数据库中的某个表a被事务1中的一个事务操作更新后,后续事务2中的另一个事务操作基于更新后的表a继续对表a进行更新,即事务2中相应的事务操作需要等待事务1中相应的事务操作执行后才能成功执行,则称这两个事务操作之间存在依赖关系;由于事务是一个不可分割的工作单位,事务中的事务操作不能独立执行,所以事务2需要等待事务1执行后才能成功执行,称事务2与事务1之间存在依赖关系;不同事务之间可能存在依赖关系,影响事务的执行顺序。scn是数据库系统中顺序增长的一个数字,用来精确区别操作的先后顺序。

3、由于事务一般根据业务需求确定,一个事务中往往存在更新多个表的事务操作,使得事务之间依赖关系复杂,在需要避免同步服务运行错误的情况下,只能考虑不对事务的执行粒度进行拆分,不允许某个事务中更新部分表的事务操作独立执行、不允许指定某个事务中更新某个表的事务操作优先执行,导致同步效率进一步降低。例如,在事务1中,更新表a的事务操作是独立的,即相应的事务操作不存在与其他事务中事务操作的依赖关系,但更新表a的事务操作是事务1的一部分,无法独立执行,且受到事务1中预设的事务操作执行顺序的限制,使得事务1与其他事务中,相互不存在依赖关系的事务操作在执行时互相等待,浪费执行时间;以及,由于更新表a的事务操作所在的事务1中可能存在更新表b的事务操作,导致更新表a的事务操作无法优先执行,执行时,事务1与其他事务需要互相等待,同步效率低。

4、鉴于此,克服该现有技术所存在的缺陷是本技术领域亟待解决的问题。


技术实现思路

1、针对现有技术的以上缺陷或改进需求,本发明提供了一种分组执行的数据同步方法和装置,其目的在于,通过实现动态调整分组规则,支持设置执行的优先级,将各分组中的子事务并行执行入库,减少执行事务的等待时间,在同步服务正常运行的条件下,解决数据同步效率低的问题。

2、本发明采用如下技术方案:

3、第一方面,本发明提供了一种分组执行的数据同步方法,包括:

4、获取分组规则;其中,每个当前分组对应至少一个表,设置每个所述当前分组的优先级;当所述分组规则改变时,将改变后的分组规则作为当前版本的分组规则,每个版本的分组规则对应一个默认分组;

5、接收日志,解析所述日志,根据当前版本的分组规则,将事务操作划分至相应的当前分组或默认分组,生成至少一个当前子事务;其中,将主事务的事务操作按所依赖的表进行分组;

6、当所述当前版本的分组规则在所述主事务未提交前改变时,将所述当前分组归属于历史分组,将所述当前子事务归属于历史子事务;

7、当解析到所述主事务的提交操作时,根据所述主事务的所有历史子事务和所有当前子事务,分别构建至少一个子事务消息和至少一个分组队列,将所述历史子事务的子事务消息下发至历史分组的分组队列,将所述当前子事务的子事务消息下发至当前分组的分组队列;

8、根据所述优先级,依次拉取各版本相应的分组队列中的所述子事务消息,根据所述子事务消息,获取待入库子事务,执行所述待入库子事务。

9、第二方面,本发明还提供了一种分组执行的数据同步装置,用于实现第一方面所述的分组执行的数据同步方法,所述分组执行的数据同步装置包括:

10、至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,用于执行第一方面所述的分组执行的数据同步方法。

11、第三方面,本发明还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,用于完成第一方面所述的分组执行的数据同步方法。

12、区别于现有技术,本发明至少具有以下有益效果:

13、本发明通过引入多版本分组管理,在保证同步数据一致性、拆分事务执行粒度的基础上,支持在数据同步过程中随时调整分组规则,提高了同步程序的便利性和容错率,且提高了数据同步效率。通过在分组规则中支持设置各个分组的执行优先级,提高了数据同步对业务需求的适应性,在避免同步服务运行错误的情况下,支持人工指定同步顺序。

14、进一步地,通过设计事务冲突检测逻辑,极大地减少了执行事务时不必要的互相等待,提高事务并行执行效率,以进一步提高数据同步效率,拓宽表分组执行方式的使用场景。



技术特征:

1.一种分组执行的数据同步方法,其特征在于,包括:

2.根据权利要求1所述的分组执行的数据同步方法,其特征在于,所述接收日志,解析所述日志,根据当前版本的分组规则,将事务操作划分至相应的当前分组或默认分组,生成至少一个当前子事务包括:

3.根据权利要求2所述的分组执行的数据同步方法,其特征在于,所述当解析到所述主事务的提交操作时,根据所述主事务的所有历史子事务和所有当前子事务,分别构建至少一个子事务消息和至少一个分组队列,将所述历史子事务的子事务消息下发至历史分组的分组队列,将所述当前子事务的子事务消息下发至当前分组的分组队列包括:

4.根据权利要求3所述的分组执行的数据同步方法,其特征在于,所述根据所述优先级,依次拉取各版本相应的分组队列中的所述子事务消息,根据所述子事务消息,获取待入库子事务,执行所述待入库子事务包括:

5.根据权利要求4所述的分组执行的数据同步方法,其特征在于,所述根据所述优先级,依次拉取各版本相应的分组队列中的所述子事务消息,根据所述子事务消息,获取待入库子事务,执行所述待入库子事务还包括:

6.根据权利要求1所述的分组执行的数据同步方法,其特征在于,所述根据所述优先级,依次拉取各版本相应的分组队列中的所述子事务消息,根据所述子事务消息,获取待入库子事务,执行所述待入库子事务还包括:

7.根据权利要求6所述的分组执行的数据同步方法,其特征在于,所述事务冲突检测包括:

8.根据权利要求7所述的分组执行的数据同步方法,其特征在于,所述当所述待检测事务所依赖的表与所述当前事务所依赖的表相同时,根据其中事务操作的类型,选择性地确定存在或不存在事务依赖包括:

9.根据权利要求1-8任一项所述的分组执行的数据同步方法,其特征在于,所述当所述当前版本的分组规则在所述主事务未提交前改变时,将所述当前分组归属于历史分组,将所述当前子事务归属于历史子事务包括:

10.一种分组执行的数据同步装置,其特征在于,包括至少一个处理器和存储器,所述至少一个处理器和存储器之间通过数据总线连接,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令在被所述处理器执行后,用于完成权利要求1-9任一所述的分组执行的数据同步方法。


技术总结
本发明涉及数据库同步技术领域,提供了一种分组执行的数据同步方法和装置。其中,本发明通过引入多版本分组管理,在保证同步数据一致性和拆分事务执行粒度的基础上,支持在数据同步过程中随时调整分组规则,提高了同步程序的便利性和容错率,且提高了数据同步效率。通过在分组规则中支持设置各个分组的执行优先级,提高了数据同步对业务需求的适应性,在避免同步服务运行错误的情况下,支持人工指定同步顺序。

技术研发人员:梅纲,吴鑫,高东升
受保护的技术使用者:武汉达梦数据库股份有限公司
技术研发日:
技术公布日:2024/1/15
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1