发明内容
针对现有技术存在的上述问题,本发明实施例提供了一种基于数据页预加载的数据库数据同步方法及设备。
第一方面,本发明的实施例提供了一种基于数据页预加载的数据库数据同步方法,包括:在目标端数据同步服务接收待同步的事务操作,按所述事务操作的ID进行分类缓存,若接收到任一所述ID所代表事务的COMMIT操作日志,则将事务中的UPDATE操作和/或DELETE操作,转换成SELECT操作,并将转换后的SELECT操作投递至数据页预加载线程,所述数据页预加载线程异步执行所述转换后的SELECT操作,实现所述待同步事务涉及的数据页预加载;激活执行线程,执行预加载的所述待同步事务,同步所述待同步事务。
进一步地,所述则将事务中的UPDATE操作和/或DELETE操作,转换成SELECT操作,包括:遍历待同步的事务操作,若事务中存在UPDATE操作和/或DELETE操作,则采用UPDATE操作和/或DELETE操作中的条件列,构造SELECT操作。
进一步地,所述则采用UPDATE操作和/或DELETE操作中的条件列,构造SELECT操作,包括:若UPDATE操作和/或DELETE操作出现连续批量操作,则将所述连续批量操作上下预设距离范围内的UPDATE操作和/或DELETE操作,转换为SELECT操作。
进一步地,所述的基于数据页预加载的数据库数据同步方法,还包括:若目标端数据同步服务启动,则初始化若干个数据页预加载线程,所述若干个数据页预加载线程,用于执行转换后的SELECT操作。
进一步地,所述的基于数据页预加载的数据库数据同步方法,还包括:若目标端数据同步服务启动,则初始化若干个事务执行线程,所述若干个事务执行线程,用于执行所述待同步的事务操作。
第二方面,本发明的实施例提供了一种基于数据页预加载的数据库数据同步装置,包括:
数据页预加载模块,用于在目标端数据同步服务接收待同步的事务操作,按所述事务操作的ID进行分类缓存,若接收到任一所述ID所代表事务的COMMIT操作日志,则将事务中的UPDATE操作和/或DELETE操作,转换成SELECT操作,并将转换后的SELECT操作投递至数据页预加载线程,所述数据页预加载线程异步执行所述转换后的SELECT操作,实现所述待同步事务涉及的数据页预加载;
事务同步模块,用于激活执行线程,执行预加载的所述待同步事务,同步所述待同步事务。
第三方面,本发明的实施例提供了一种电子设备,包括:
至少一个处理器;以及
与处理器通信连接的至少一个存储器,其中:
存储器存储有可被处理器执行的程序指令,处理器调用程序指令能够执行第一方面的各种可能的实现方式中任一种可能的实现方式所提供的基于数据页预加载的数据库数据同步方法。
第四方面,本发明的实施例提供了一种非暂态计算机可读存储介质,非暂态计算机可读存储介质存储计算机指令,计算机指令使计算机执行第一方面的各种可能的实现方式中任一种可能的实现方式所提供的基于数据页预加载的数据库数据同步方法。
本发明实施例提供的基于数据页预加载的数据库数据同步方法及设备,通过将事务中的操作转化为相应的处理程序较为快速简洁的SELECT操作,并投递至数据页预加载线程执行,可以实现事务执行之前对事务中的操作进行预热,从而有效提升数据库事务同步时的同步效率。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。另外,本发明提供的各个实施例或单个实施例中的技术特征可以相互任意结合,以形成可行的技术方案,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时,应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
本发明实施例提供了一种基于数据页预加载的数据库数据同步方法,参见图1,该方法包括:
101、在目标端数据同步服务接收待同步的事务操作,按所述事务操作的ID进行分类缓存,若接收到任一所述ID所代表事务的COMMIT操作日志,则将事务中的UPDATE操作和/或DELETE操作,转换成SELECT操作,并将转换后的SELECT操作投递至数据页预加载线程,所述数据页预加载线程异步执行所述转换后的SELECT操作,实现所述待同步事务涉及的数据页预加载;
102、激活执行线程,执行预加载的所述待同步事务,同步所述待同步事务。
在上述实施例的基础上,本发明实施例中提供的基于数据页预加载的数据库数据同步方法,所述则将事务中的UPDATE操作和/或DELETE操作,转换成SELECT操作,包括:遍历待同步的事务操作,若事务中存在UPDATE操作和/或DELETE操作,则采用UPDATE操作和/或DELETE操作中的条件列,构造SELECT操作。这就可以实现事务中的UPDATE或DELETE操作涉及的数据页在数据库中预热,防止事务执行线程在执行UPDATE或DELETE操作时访问到冷数据,冷数据则需要等待从磁盘上加载,从而影响到执行的性能。
具体地,假设同步事务中存在UPDATE操作:UPDATE T SET C1=1,C2=1,C3=1,C4=1,C5=1,…,Cn=1,WHERE ID=1;
上述操作在执行时,可以先把UPDATE转换成SELECT操作先执行,以便预热UPDATE需要访问的数据,转换为:SELECT 1FROM T WHERE ID=1;
假设同步事务中存在DELETE操作:DELETE FROM T WHERE ID=1;
上述操作在执行时,可以先把DELETE转换成SELECT操作先执行,以便预热DELETE需要访问的数据,转换为:SELECT 1FROM T WHERE ID=1;
在上述实施例的基础上,本发明实施例中提供的基于数据页预加载的数据库数据同步方法,所述则采用UPDATE操作和/或DELETE操作中的条件列,构造SELECT操作,包括:若UPDATE操作和/或DELETE操作出现连续批量操作,则将所述连续批量操作上下预设距离范围内的UPDATE操作和/或DELETE操作,转换为SELECT操作。
需要说明的是,当UPDATE操作或DELETE操作出现连续批量的操作时,把这些操作都转换为SELECT操作会造成多个SELECT操作要预加载的数据页属于同一页,造成无意义的执行,浪费目的端数据库的资源。当批量操作出现时,可以采用跳跃式转换,按N为跳跃基数(N即为上下预设距离范围),只转换该批量操作中上下间隔为N的操作为SELECT操作。
在上述实施例的基础上,本发明实施例中提供的基于数据页预加载的数据库数据同步方法,还包括:若目标端数据同步服务启动,则初始化若干个数据页预加载线程,所述若干个数据页预加载线程,用于执行转换后的SELECT操作。
在上述实施例的基础上,本发明实施例中提供的基于数据页预加载的数据库数据同步方法,还包括:若目标端数据同步服务启动,则初始化若干个事务执行线程,所述若干个事务执行线程,用于执行所述待同步的事务操作。
具体地,将事务按事务ID分类为事务1至事务N,转换后的SELECT操作由数据页预加载线程1到数据页预加载线程N顺序抽取SELECT操作执行,提交事务则分别由事务执行线程1到事务执行线程N执行。有关UPDATE操作、DELETE操作和SELECT操作的具体内容可以参见表1。
表1
相对于转换成UPDATE和DELETE操作,SELECT操作具有最小的系统侵入性,SELECT操作不会对目的表上锁;SELECT操作也不会触发目的表上的触发器;SELECT操作不会触发目的表的约束检查;SELECT操作在目的端数据库不产生任何操作日志。
本发明实施例提供的基于数据页预加载的数据库数据同步方法,通过将事务中的操作转化为相应的处理程序较为快速简洁的SELECT操作,并投递至数据页预加载线程执行,可以实现事务执行之前对事务中的操作进行预热,从而有效提升数据库事务同步时的同步效率。
本发明各个实施例的实现基础是通过具有处理器功能的设备进行程序化的处理实现的。因此在工程实际中,可以将本发明各个实施例的技术方案及其功能封装成各种模块。基于这种现实情况,在上述各实施例的基础上,本发明的实施例提供了一种基于数据页预加载的数据库数据同步装置,该装置用于执行上述方法实施例中的基于数据页预加载的数据库数据同步方法。参见图2,该装置包括:
数据页预加载模块201,用于在目标端数据同步服务接收待同步的事务操作,按所述事务操作的ID进行分类缓存,若接收到任一所述ID所代表事务的COMMIT操作日志,则将事务中的UPDATE操作和/或DELETE操作,转换成SELECT操作,并将转换后的SELECT操作投递至数据页预加载线程,所述数据页预加载线程异步执行所述转换后的SELECT操作,实现所述待同步事务涉及的数据页预加载;
事务同步模块202,用于激活执行线程,执行预加载的所述待同步事务,同步所述待同步事务。
本发明实施例提供的基于数据页预加载的数据库数据同步装置,采用数据页预加载模块和事务同步模块,通过将事务中的操作转化为相应的处理程序较为快速简洁的SELECT操作,并投递至数据页预加载线程执行,可以实现事务执行之前对事务中的操作进行预热,从而有效提升数据库事务同步时的同步效率。
本发明实施例的方法是依托电子设备实现的,因此对相关的电子设备有必要做一下介绍。基于此目的,本发明的实施例提供了一种电子设备,如图3所示,该电子设备包括:至少一个处理器(processor)301、通信接口(Communications Interface)304、至少一个存储器(memory)302和通信总线303,其中,至少一个处理器301,通信接口304,至少一个存储器302通过通信总线303完成相互间的通信。至少一个处理器301可以调用至少一个存储器302中的逻辑指令,以执行如下方法:在目标端数据同步服务接收待同步的事务操作,按所述事务操作的ID进行分类缓存,若接收到任一所述ID所代表事务的COMMIT操作日志,则将事务中的UPDATE操作和/或DELETE操作,转换成SELECT操作,并将转换后的SELECT操作投递至数据页预加载线程,所述数据页预加载线程异步执行所述转换后的SELECT操作,实现所述待同步事务涉及的数据页预加载;激活执行线程,执行预加载的所述待同步事务,同步所述待同步事务。
此外,上述的至少一个存储器302中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。例如包括:在目标端数据同步服务接收待同步的事务操作,按所述事务操作的ID进行分类缓存,若接收到任一所述ID所代表事务的COMMIT操作日志,则将事务中的UPDATE操作和/或DELETE操作,转换成SELECT操作,并将转换后的SELECT操作投递至数据页预加载线程,所述数据页预加载线程异步执行所述转换后的SELECT操作,实现所述待同步事务涉及的数据页预加载;激活执行线程,执行预加载的所述待同步事务,同步所述待同步事务。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。