基于数据页预加载及回滚的数据库数据同步方法及设备与流程

文档序号:18164913发布日期:2019-07-13 09:32阅读:153来源:国知局
基于数据页预加载及回滚的数据库数据同步方法及设备与流程

本发明实施例涉及数据库数据处理技术领域,尤其涉及一种基于数据页预加载及回滚的数据库数据同步方法及设备。



背景技术:

传统的基于数据库自身的主备机制实现数据库数据的实时复制,是进行数据容灾备份,保障数据安全的重要的解决方案。数据库主备机制下,一般备机作为备份节点,通常只提供只读访问,可以在备机上做一些报表分析、数据挖掘等只读访问的应用,而不能像主机一样提供读写访问。另外,数据库主备机制要求备机数据库系统和主机一致,对于异构数据库系统环境,则不能利用数据库自身的主备机制实现有效的数据实时复制。针对数据库主备机制实现数据复制的不足,目前基于软件的异构数据库复制技术应用广泛。这种技术在源端捕获出数据库的增量数据,然后发送到目标端,在目标端通过通用的数据库访问接口,将增量数据应用到目标数据库,实现数据复制。这种技术因为使用到通用数据库接口,因此支持异构数据库系统复制,支持异构操作系统环境,并且目标端备机数据库系统可读写,是一种“双活”系统。

有多种技术方式实现获取源端数据库的增量数据,其中基于数据库日志捕获分析的数据实时同步技术,因其对源数据库侵入性小,捕获分析性能高,得到较大发展及研究。这种技术通过分析源数据库归档或联机日志,捕获出数据库的insert、update、delete操作日志,然后发送到目标端,目标端对日志信息进行逆向生成,恢复成sql语句方式,然后使用数据库通用接口,应用到目标数据库,实现数据复制。因此,在数据库实时复制过程中,目标端的执行效率是影响数据同步性能的重要因素。

目标端数据库上执行同步事务时,如果同步事务中操作相关数据页都已经加载,那么事务执行的效率将会较为高效;否则,如果同步事务中操作相关的数据页还在数据库磁盘文件中,访问这些页时则需要等待io线程从磁盘上加载该页,事务执行的效率将会变得非常缓慢,影响数据同步的效率。因此,如何提高事务同步时操作访问数据页的命中率就可以提升目标端数据复制的执行效率,就成为业界亟待解决的重要技术问题。



技术实现要素:

针对现有技术存在的上述问题,本发明实施例提供了一种基于数据页预加载及回滚的数据库数据同步方法及设备。

第一方面,本发明的实施例提供了一种基于数据页预加载及回滚的数据库数据同步方法,包括:在目标端数据同步服务接收待同步的事务操作,按所述事务操作的id进行分类缓存,若接收到任一事务操作日志,判断该操作是否属于update操作和/或delete操作,如果是则转换成update操作和/或delete操作,并将转换后的update操作和/或delete操作投递至数据页预加载线程,所述数据页预加载线程异步执行所述转换后的update操作和/或delete操作并回滚,实现所述待同步事务涉及的数据页预加载;待接收到事务的commit操作日志便激活执行线程,执行预加载的所述待同步事务,同步所述待同步事务;其中,转换后的update操作和/或delete操作的更新速度,快于转换前的update操作和/或delete操作的更新速度。

进一步地,所述则将事务中的update操作和/或delete操作,转换成update操作和/或delete操作,包括:判断接收到同步的事务操作,若事务操作为update操作和/或delete操作,则采用update操作和/或delete操作中的条件列,构造update操作和/或delete操作。

进一步地,所述则采用update操作和/或delete操作中的条件列,构造update操作和/或delete操作,包括:若update操作和/或delete操作出现连续批量操作,则采用update操作和/或delete参数批量绑定多行的方式一次性执行,实现相关数据页的一次性加载。

进一步地,所述的基于数据页预加载及回滚的数据库数据同步方法,还包括:若目标端数据同步服务启动,则初始化若干个数据页预加载线程,所述若干个数据页预加载线程,用于执行转换后的update操作和/或delete操作。

进一步地,所述的基于数据页预加载及回滚的数据库数据同步方法,还包括:若目标端数据同步服务启动,则初始化若干个事务执行线程,所述若干个事务执行线程,用于执行所述待同步的事务操作。

第二方面,本发明的实施例提供了一种基于数据页预加载及回滚的数据库数据同步装置,包括:

数据页预加载模块,用于在目标端数据同步服务接收待同步的事务操作,按所述事务操作的id进行分类缓存,若接收到任一事务操作日志,判断该操作是否属于update操作和/或delete操作,如果是则转换成update操作和/或delete操作,并将转换后的update操作和/或delete操作投递至数据页预加载线程,所述数据页预加载线程异步执行所述转换后的update操作和/或delete操作并回滚,实现所述待同步事务涉及的数据页预加载;

事务同步模块,待接收到事务的commit操作日志便激活执行线程,执行预加载的所述待同步事务,同步所述待同步事务;

其中,转换后的update操作和/或delete操作的更新速度,快于转换前的update操作和/或delete操作的更新速度。

第三方面,本发明的实施例提供了一种电子设备,包括:

至少一个处理器;以及

与处理器通信连接的至少一个存储器,其中:

存储器存储有可被处理器执行的程序指令,处理器调用程序指令能够执行第一方面的各种可能的实现方式中任一种可能的实现方式所提供的基于数据页预加载及回滚的数据库数据同步方法。

第四方面,本发明的实施例提供了一种非暂态计算机可读存储介质,非暂态计算机可读存储介质存储计算机指令,计算机指令使计算机执行第一方面的各种可能的实现方式中任一种可能的实现方式所提供的基于数据页预加载及回滚的数据库数据同步方法。

本发明实施例提供的基于数据页预加载及回滚的数据库数据同步方法及设备,通过将事务中的操作转化为相应的更新较为快速的操作,并投递至数据页预加载线程执行并回滚,可以实现事务执行之前对事务中的操作进行预热,从而有效提升数据库事务同步时的同步效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单的介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的基于数据页预加载及回滚的数据库数据同步方法流程图;

图2为本发明实施例提供的基于数据页预加载及回滚的数据库数据同步装置结构示意图;

图3为本发明实施例提供的电子设备的实体结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。另外,本发明提供的各个实施例或单个实施例中的技术特征可以相互任意结合,以形成可行的技术方案,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时,应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。

本发明实施例提供了一种基于数据页预加载及回滚的数据库数据同步方法,参见图1,该方法包括:

101、在目标端数据同步服务接收待同步的事务操作,按所述事务操作的id进行分类缓存,若接收到任一事务操作日志,判断该操作是否属于update操作和/或delete操作,如果是则转换成update操作和/或delete操作,并将转换后的update操作和/或delete操作投递至数据页预加载线程,所述数据页预加载线程异步执行所述转换后的update操作和/或delete操作并回滚,实现所述待同步事务涉及的数据页预加载;

102、待接收到事务的commit操作日志便激活执行线程,执行预加载的所述待同步事务,同步所述待同步事务。

其中,转换后的update操作和/或delete操作的更新速度,快于转换前的update操作和/或delete操作的更新速度。

在上述实施例的基础上,本发明实施例中提供的基于数据页预加载及回滚的数据库数据同步方法,所述则将事务中的update操作和/或delete操作,转换成update操作和/或delete操作,包括:判断接收到同步的事务操作,若事务操作为update操作和/或delete操作,则采用update操作和/或delete操作中的条件列,构造update操作和/或delete操作。这样可以实现事务中的update操作和/或delete操作涉及的数据页在数据库中预热,防止事务执行线程在执行update操作和/或delete操作时访问到冷数据,冷数据则需要等待从磁盘上加载,从而影响到执行的性能。

具体地,假设同步事务中存在update操作:updatetsetc1=1,c2=1,c3=1,c4=1,c5=1,…,cn=1,whereid=1;

上述操作在执行时,可以先把update转换成update操作先执行,以便预热update需要访问的数据,转换为:updatetsetc=cwhereid=1;

也可以将update转换成delete操作先执行,以便预热update需要访问的数据,转换为:deletefromtwhereid=1。

同步事务存在delete操作:deletefromtwhereid=1;

上述操作在执行时,可以先把delete转换成update操作先执行,以便预热delete需要访问的数据,转换为:updatetsetc=cwhereid=1;

也可以将delete转换成delete操作先执行,以便预热delete需要访问的数据,转换为:deletefromtwhereid=1。

可以看出,通过操作的转换,可以将一些需要更新的列进行简化,这就可以提高事务操作的预热效率。

在上述实施例的基础上,本发明实施例中提供的基于数据页预加载及回滚的数据库数据同步方法,所述则采用update操作和/或delete操作中的条件列,构造update操作和/或delete操作,包括:若update操作和/或delete操作出现连续批量操作,则采用update操作和/或delete参数批量绑定多行的方式一次性执行,实现相关数据页的一次性加载。

需要说明的是,当update操作或delete操作出现连续批量的操作时,可以使用参数批量绑定多行的方式一次性执行加载。相对于转换成select操作,转换成update操作的优势就在于可以使用参数绑定的方式批量的加载多行;相对于转换成delete操作,update操作可以防止记录在数据页中发生迁移;相对与转换成update操作,delete操作执行后产生的数据库日志量会更小。

在上述实施例的基础上,本发明实施例中提供的基于数据页预加载及回滚的数据库数据同步方法,还包括:若目标端数据同步服务启动,则初始化若干个数据页预加载线程,所述若干个数据页预加载线程,用于执行转换后的update操作和/或delete操作。

在上述实施例的基础上,本发明实施例中提供的基于数据页预加载及回滚的数据库数据同步方法,还包括:若目标端数据同步服务启动,则初始化若干个事务执行线程,所述若干个事务执行线程,用于执行所述待同步的事务操作。

具体地,将事务操作按接收到的事务操作顺序分解为操作1至操作n,转换后的update操作和/或delete操作,由数据页预加载线程1到数据页预加载线程n,顺序抽取update操作和/或delete操作执行,提交事务则分别由事务执行线程1到事务执行线程n执行。有关update操作和delete操作的具体内容可以参见表1。

表1

本发明实施例提供的基于数据页预加载及回滚的数据库数据同步方法,通过将事务中的操作转化为相应的更新较为快速的操作,并投递至数据页预加载线程执行并回滚,可以实现事务执行之前对事务中的操作进行预热,从而有效提升数据库事务同步时的同步效率。

本发明各个实施例的实现基础是通过具有处理器功能的设备进行程序化的处理实现的。因此在工程实际中,可以将本发明各个实施例的技术方案及其功能封装成各种模块。基于这种现实情况,在上述各实施例的基础上,本发明的实施例提供了一种基于数据页预加载及回滚的数据库数据同步装置,该装置用于执行上述方法实施例中的基于数据页预加载及回滚的数据库数据同步方法。参见图2,该装置包括:

数据页预加载模块201,用于在目标端数据同步服务接收待同步的事务操作,按所述事务操作的id进行分类缓存,若接收到任一事务操作日志,判断该操作是否属于update操作和/或delete操作,如果是则转换成update操作和/或delete操作,并将转换后的update操作和/或delete操作投递至数据页预加载线程,所述数据页预加载线程异步执行所述转换后的update操作和/或delete操作并回滚,实现所述待同步事务涉及的数据页预加载;

事务同步模块202,待接收到事务的commit操作日志便激活执行线程,执行预加载的所述待同步事务,同步所述待同步事务;

其中,转换后的update操作和/或delete操作的更新速度,快于转换前的update操作和/或delete操作的更新速度。

本发明实施例提供的基于数据页预加载及回滚的数据库数据同步装置,采用数据页预加载模块和事务同步模块,通过将事务中的操作转化为相应的更新较为快速的操作,并投递至数据页预加载线程执行并回滚,可以实现事务执行之前对事务中的操作进行预热,从而有效提升数据库事务同步时的同步效率。

本发明实施例的方法是依托电子设备实现的,因此对相关的电子设备有必要做一下介绍。基于此目的,本发明的实施例提供了一种电子设备,如图3所示,该电子设备包括:至少一个处理器(processor)301、通信接口(communicationsinterface)304、至少一个存储器(memory)302和通信总线303,其中,至少一个处理器301,通信接口304,至少一个存储器302通过通信总线303完成相互间的通信。至少一个处理器301可以调用至少一个存储器302中的逻辑指令,以执行如下方法:在目标端数据同步服务接收待同步的事务操作,按所述事务操作的id进行分类缓存,若接收到任一事务操作日志,判断该操作是否属于update操作和/或delete操作,如果是则转换成update操作和/或delete操作,并将转换后的update操作和/或delete操作投递至数据页预加载线程,所述数据页预加载线程异步执行所述转换后的update操作和/或delete操作并回滚,实现所述待同步事务涉及的数据页预加载;待接收到事务的commit操作日志便激活执行线程,执行预加载的所述待同步事务,同步所述待同步事务;其中,转换后的update操作和/或delete操作的更新速度,快于转换前的update操作和/或delete操作的更新速度。

此外,上述的至少一个存储器302中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。例如包括:在目标端数据同步服务接收待同步的事务操作,按所述事务操作的id进行分类缓存,若接收到任一事务操作日志,判断该操作是否属于update操作和/或delete操作,如果是则转换成update操作和/或delete操作,并将转换后的update操作和/或delete操作投递至数据页预加载线程,所述数据页预加载线程异步执行所述转换后的update操作和/或delete操作并回滚,实现所述待同步事务涉及的数据页预加载;待接收到事务的commit操作日志便激活执行线程,执行预加载的所述待同步事务,同步所述待同步事务;其中,转换后的update操作和/或delete操作的更新速度,快于转换前的update操作和/或delete操作的更新速度。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1