一种基于并发扫描以及并发回放的数据事务复制的方法技术

技术编号:39650432 阅读:12 留言:0更新日期:2023-12-09 11:18
本发明专利技术提供一种基于并发扫描以及并发回放的数据事务复制的方法,属于数据处理技术领域,当备库回放事务时,多个互相不会依赖的事务可以并发回放,本发明专利技术主要实现了多个可以并发回放的事务的并发回放的问题

【技术实现步骤摘要】
一种基于并发扫描以及并发回放的数据事务复制的方法


[0001]本专利技术涉及数据处理
,尤其涉及一种基于并发扫描以及并发回放的数据事务复制的方法


技术介绍

[0002]数据库备库回放是指将主库的操作记录在备库上重新执行,以使备库的数据与主库一致,目前只能串行回放事务

主库如果并发事务量较大
,
从库只能串行回放

主库发生了大事务
,
会阻塞后续的所有的事务的运行


技术实现思路

[0003]为了解决以上技术问题,本专利技术提供了一种基于并发扫描以及并发回放的数据事务复制的方法,可以实现由原本的串行的事务回放优化成事务之间的并发回放,极大幅度的提升事务的回放性能,解决了分布式数据库的事务数据只能串行回放的问题

[0004]本专利技术的技术方案是:
[0005]一种基于并发扫描以及并发回放的数据事务复制的方法,
[0006]根据
Reactor
模型,拆分
Main Reactor(Scanner)

Sub Reactor(Replayer)
两种协程并发模型,以及通过并发控制确保全部可回放的事务最终都被回放结束;
[0007]通过并发的
Scanner
实现并发对事务回放队列进行扫描,生成可以并发回放的事务,并且通知回放协程
Replayer
进行并发的回放

[0008]进一步的,
[0009]备库的事务数据按照事务
ID
分段存储到备库的事务数据队列中,根据事务
ID

UUID
完全无序的特性,对
UUID
进行事务
ID
分段并发扫描,将事务
ID UUID
分段后,交给
Scanner
协程,每个
Scanner
负责一个
UUID
分区进行数个
Scanner
并发扫描,扫描可回放的事务

[0010]当
Scanner
发现可回放的事务后,会将事务
ID
加入
txnList
执行
enqueu
操作,加入事务
ID
后,
Scanner
会执行
notify
操作,唤醒正在睡眠的
Replayer
进行事务回放操作

[0011]Replayer
刚启动后处于睡眠状态,当有事务回放时,会被随机唤醒;被唤醒的
Replayer
协程执行事务回放任务,并且清理事务的依赖关系

[0012]当发现可回放的事务时,如果发现可回放的事务数等于1,则由当前协程进行回放减少一次
CPU
切换的开销;当发现多余1个可回放事务时,
Replayer
协程会将除去第一个的可回放事务加入
txnList
唤醒其他协程进行事务回放

[0013]处理重复发现可回放事务,需要对重复发现相同的事务
ID
进行防御性幂等处理,因此,需要对每个可回放事务引入
txnIDSet
进行幂等处理

[0014]在全部可回放事务全部回放结束后,结束回放的流程,在此给出回放结束的定义;当可回放事务全部回放结束后,认为回放结束

[0015]可回放事务分为3类,过去发现的可回放事务
/
现在发现的可回放事务
/
将来发现
的可回放事务,过去发现的可回放事务都会被加入到
txnList
中,现在发现的可回放事务正在由
replayer
进行回放,将来发现的可回放事务是由
Scanner
扫描
UUID
进行发现的

[0016]进一步的,
[0017]可根据
CPU
的数量,调整
Scanner
以及
Replayer
的回放协程的数量,合理设置两组协程的负载

[0018]本专利技术的有益效果是
[0019]本专利技术主要实现了多个可以并发回放的事务的并发回放的问题

通过并发的多个
Scanner
实现并发对事务回放队列进行扫描,生成多个可以并发回放的事务,并且通知回放协程
Replayer
进行并发的回放

附图说明
[0020]图1是事务数据存储到事务数据队列中的工作示意图;
[0021]图2是事务
ID
分段并发扫描示意图;
[0022]图3是
Replayer
协程的生命周期示意图

具体实施方式
[0023]为使本专利技术实施例的目的

技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚

完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例,基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本专利技术保护的范围

[0024]本专利技术公开了一种分布式数据库基于
Reactor
模型的事务数据并发回放的办法,解决了分布式数据库的事务数据只能串行回放的问题,根据
Reactor
模型,拆分
Main Reactor(Scanner)

Sub Reactor(Replayer)
两种协程并发模型,以及通过并发控制确保全部可回放的事务最终都被回放结束

[0025]具体的实现如下:
[0026]1.
备库的事务数据按照事务
ID
分段存储到备库的事务数据队列中,参考如下图1;根据事务
ID

UUID
完全无序的特性,可以对
UUID
进行事务
ID
分段并发扫描,示意图参考如下图
2。
将事务
ID UUID
分段后,交给多个
Scanner
协程,每个
Scanner
负责某个
UUID
分区进行多个
Scanner
并发扫描,扫描可回放的事务

[0027]2.

Scanner
发现可回放的事务后,会将事务
ID
加入
txnList
执行
enqueu
操作,加入本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种基于并发扫描以及并发回放的数据事务复制的方法,其特征在于,根据
Reactor
模型,拆分
Main Reactor(Scanner)

Sub Reactor(Replayer)
两种协程并发模型,以及通过并发控制确保全部可回放的事务最终都被回放结束;通过并发的
Scanner
实现并发对事务回放队列进行扫描,生成可以并发回放的事务,并且通知回放协程
Replayer
进行并发的回放
。2.
根据权利要求1所述的方法,其特征在于,备库的事务数据按照事务
ID
分段存储到备库的事务数据队列中,根据事务
ID

UUID
完全无序的特性,对
UUID
进行事务
ID
分段并发扫描,将事务
ID UUID
分段后,交给
Scanner
协程,每个
Scanner
负责一个
UUID
分区进行数个
Scanner
并发扫描,扫描可回放的事务
。3.
根据权利要求2所述的方法,其特征在于,当
Scanner
发现可回放的事务后,会将事务
ID
加入
txnList
执行
enqueu
操作,加入事务
ID
后,
Scanner
会执行
notify
操作,唤醒正在睡眠的
Replayer
进行事务回放操作
。4.
根据权利要求3所述的方法,其特征在于,
Replayer<...

【专利技术属性】
技术研发人员:邱卓栋冯友旭
申请(专利权)人:上海沄熹科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1