CN111737341B - 基于日志解析的插入操作同步优化方法和数据同步系统 - Google Patents

基于日志解析的插入操作同步优化方法和数据同步系统 Download PDF

Info

Publication number
CN111737341B
CN111737341B CN202010328622.2A CN202010328622A CN111737341B CN 111737341 B CN111737341 B CN 111737341B CN 202010328622 A CN202010328622 A CN 202010328622A CN 111737341 B CN111737341 B CN 111737341B
Authority
CN
China
Prior art keywords
target
value
insertion operation
distribution
transaction
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
CN202010328622.2A
Other languages
English (en)
Other versions
CN111737341A (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 CN202010328622.2A priority Critical patent/CN111737341B/zh
Publication of CN111737341A publication Critical patent/CN111737341A/zh
Application granted granted Critical
Publication of CN111737341B publication Critical patent/CN111737341B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1734Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明提供一种基于日志解析的插入操作同步优化方法和数据同步系统,该插入操作同步优化方法包括:判断待同步事务是否是针对待执行表的插入操作;若是,则根据待执行表的字典信息,判断待执行表是否存在列定义不带默认值或者列定义的默认值为空值的目标列;若存在,则分析待同步事务的各个插入操作,获取插入值为空值的目标列在各个插入操作的分布情况;当插入值为空值的目标列的分布情况满足设定条件时,在原有插入操作的基础上,将与插入值为空值的目标列相关的语句删除,重新生成目标插入操作,根据目标插入操作进行数据同步。

Description

基于日志解析的插入操作同步优化方法和数据同步系统
技术领域
本发明属于数据同步领域,更具体地,涉及一种基于日志解析的插入操作同步优化方法和数据同步系统。
背景技术
在基于日志解析架构的数据库实时同步系统(支持异构)中,数据库的DML(DataManipulation Language,简写为DML)操作是主要的数据同步内容,其中,DML操作包括INSERT、UPDATE和DELETE操作,如何提高DML操作的同步效率是各种同步软件需要共同面对的问题。
而DML操作包含的同步场景多种多样,使用统一的数据同步处理逻辑则难以达到最佳的同步效果,这就要求同步软件针对各种数据场景有针对性的进行优化,才能达到最佳的同步效果。
目前存在这种同步场景,某类表的列数很大,这类表的数据初始化时会批量插入大量的数据,然后这些插入的数据行中,只会在特定的几个列上填有有效值,其它列则默认空(NULL)值。针对这种场景,如果按照统一的处理逻辑,目标端数据同步服务在入库时,会构造全列的插入语句,然后绑定全列数据来填充后再执行,这种统一处理的方式虽然实现起来简单可靠,但是也会造成不必要的开销,影响了同步性能。针对这种特殊同步场景,如何提升它的同步性能就成为业界亟待解决的技术问题。
鉴于此,克服该现有技术产品所存在的不足是本技术领域亟待解决的问题。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于日志解析的插入操作同步优化方法和数据同步系统,其目的在于,通过减少 INSERT语句中,需要填充列的个数来提高执行性能,那些被剔除的列在插入时,数据库会默认填入NULL值,不需要在SQL语句中显示的指定,可以提高同步的性能。
为实现上述目的,按照本发明的一个方面,提供了一种基于日志解析的插入操作同步优化方法,所述插入操作同步优化方法包括:
判断待同步事务是否是针对待执行表的插入操作;
若是,则根据所述待执行表的字典信息,判断所述待执行表是否存在列定义不带默认值或者列定义的默认值为空值的目标列;
若存在,则分析所述待同步事务的各个插入操作,获取插入值为空值的目标列在各个插入操作的分布情况;
当插入值为空值的目标列的分布情况满足设定条件时,在原有插入操作的基础上,将与插入值为空值的目标列相关的语句删除,重新生成目标插入操作,根据所述目标插入操作进行数据同步。
优选地,判断所述待执行表是否存在列定义不带默认值或者列定义的默认值为空值的目标列之后还包括:
若存在,则计算所述待同步事务的第一个插入操作中,插入值为空值的目标列的占比率;
判断所述占比率是否大于设定值;
若所述占比率大于设定值,则执行分析所述待同步事务的各个插入操作,获取插入值为空值的目标列在各个插入操作的分布情况的步骤。
优选地,所述分析所述待同步事务中的各个插入操作,插入值为空值的目标列在各行的分布情况包括:
步骤A:分析所述待同步事务中的第一个插入操作,绘制插入值为空值的目标列在整行的分布情况,得到第一分布标记组;
步骤B:分析所述待同步事务的第N个插入操作,绘制插入值为空值的目标列在整行的分布情况,得到第N分布标记组,其中,N表示插入操作在所述待同步事务中的排列序号,N的初始值为2;
步骤C:判断所述第一分布标记组和所述第N分布标记组是否一致;
步骤D:若一致,则设置N=N+1后,依次执行步骤B和步骤C,以得到插入值为空值的目标列在各个插入操作的分布情况。
优选地,所述插入操作同步优化方法包括:
当步骤D执行完成后,所述待同步事务结束,则插入值为空值的目标列在各个插入操作的分布完全一致;
当步骤D执行完成后,所述待同步事务中存在未被分析的插入操作,则插入值为空值的目标列在各个插入操作中的分布不完全一致。
优选地,所述插入操作同步优化方法包括:
当插入值为空值的目标列在各个插入操作的分布完全一致时,在原有插入操作的基础上,将与插入值为空值的目标列相关的语句删除,重新生成目标插入操作,根据所述目标插入操作进行数据同步;
当插入值为空值的目标列在各个插入操作的分布不完全一致时,根据所述待同步事务中原有的插入操作进行数据同步。
优选地,所述插入操作同步优化方法包括:
当步骤D执行完成后,获取已经完成分布标记组分析的插入操作的数目,标记为M1;
获取所述待同步事务中所包含的插入操作的总数目,标记为M2;
判断M2与M1的差值是否小于预设的阈值;
若小于,则按照如下方式进行数据同步:
针对前M1个插入操作,在原有插入操作的基础上,将与插入值为空值的目标列相关的语句删除,重新生成目标插入操作,根据所述目标插入操作进行数据同步;
针对其余的插入操作,根据原有的插入操作进行数据同步。
优选地,在步骤C:判断所述第一分布标记组和所述第N分布标记组是否一致,之后还包括:
若不一致,则根据所述待同步事务中原有的插入操作进行数据同步;
或,
步骤E:若不一致,则提取所述第一分布标记组和所述第N分布标记组中,空值分布相同的目标列,以重新生成参照分布标记组;
步骤F:设置N=N+1后,分析所述待同步事务的第N个插入操作,绘制插入值为空值的目标列在整行的分布情况,得到第N分布标记组;
步骤G:判断所述第N分布标记组与所述参照分布标记组是否一致;
步骤H:若一致,则依次执行步骤F和步骤G,以得到插入值为空值的目标列在各个插入操作的分布情况。
优选地,所述插入操作同步优化方法还包括:
当步骤H执行完成时,获取已经完成分布标记组分析的插入操作的排列序号,标记为P,获取所述参照分布标记组中的目标列,标记为优化目标列;
按照如下方式进行数据同步:
针对前P个插入操作,在原有插入操作的基础上,将与所述优化目标列相关的语句删除,重新生成目标插入操作,根据所述目标插入操作进行数据同步;
针对其余的插入操作,根据原有的插入操作进行数据同步。
优选地,所述判断待同步事务是否是针对待执行表的插入操作之后还包括:
若不是,则根据所述待同步事务原有的DML操作进行数据同步。
为实现上述目的,按照本发明的另一个方面,提供了一种数据同步系统,所述数据同步系统包括至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被程序设置为执行本申请所述的插入操作同步优化方法。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有如下有益效果:对于较大规模的插入操作,在插入操作满足优化条件时,通过减少INSERT语句中,需要填充列的个数来提高执行性能,那些被剔除的列在插入时,数据库会默认填入NULL值,不需要在SQL语句中显示的指定,可以提高同步的性能。
附图说明
图1是本发明实施例提供的一种基于日志解析的插入操作同步优化方法的流程示意图;
图2是本发明实施例提供的图1中步骤103一种实施方式的流程示意图;
图3是本发明实施例提供的图1中步骤103另一种实施方式的流程示意图;
图4是本发明实施例提供的图1中步骤103又一种实施方式的流程示意图;
图5是本发明实施例提供的一种数据同步系统的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明的描述中,术语“内”、“外”、“纵向”、“横向”、“上”、“下”、“顶”、“底”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明而不是要求本发明必须以特定的方位构造和操作,因此不应当理解为对本发明的限制。
此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
实施例1:
在实际应用场景下,在源端部署源端数据同步系统,在目标端部署目标端数据同步系统,所述源端数据同步系统用于将源端数据库的日志发送至所述目标端数据同步系统,所述目标端数据同步系统用于解析所述源端数据库的日志,以将源端数据库的同步操作应用到所述目标端数据库。
如图1所示,在本实施例中,提供一种基于日志解析的插入操作同步优化方法,所述插入操作同步优化方法具体包括:
步骤101:判断待同步事务是否是针对待执行表的插入操作。
源端数据库在执行各个操作时,会产生日志记录相应的操作,日志中会记录操作所属事务的事务标识号(事务ID)以及该操作在其所属的事务中的操作编号。目标端数据同步服务在接收到源端的操作以后,根据操作中携带的事务标识号,将各个操作归类到相应的事务中。
在进行数据同步时,判断待同步事务是否是针对单个表的插入操作,若是,则所述待同步事务具有可以优化的可能性,则继续执行步骤102。
步骤102:若是,则根据所述待执行表的字典信息,判断所述待执行表是否存在列定义不带默认值或者列定义的默认值为空值的目标列。
在实际应用场景下,需要先从目标端数据库中获取待执行表的字典信息,以确定所述待执行表是否存在列定义不带默认值或者列定义的默认值为空值(NULL)的目标列。如果列不带默认值或列的默认值为NULL,则表示该列在INSERT操作插入NULL时可以被优化。
在此需要说明的是,也可以先执行步骤102,再执行步骤101,在本发明中不限定具体的顺序。
在实际应用场景下,若待同步事务不是针对待执行表的插入操作,则根据所述待同步事务原有的DML操作进行数据同步。
步骤103:若存在,则分析所述待同步事务的各个插入操作,获取插入值为空值的目标列在各个插入操作的分布情况。
在实际应用场景下,一些目标列的插入值不为空值,此种形式的目标列不能被优化;对于插入值为空值的目标列也不能被优化。能够满足优化至少具备如下两个条件:列定义不带默认值或者默认值为空值,列的插入值为空值。
假设各行中,插入值为空值的目标列分布不尽相同,在分析插入操作和优化插入操作时,同样会耗费大量的CPU资源,无需进行插入操作的优化,按照原有的插入操作进行同步即可。在插入值为空值的目标列存在一定分布规律时,可以统一优化插入操作,减少插入操作语句中,需要填充列的个数来提高执行性能。
步骤103的具体实现过程详见下述描述。
步骤104:当插入值为空值的目标列的分布情况满足设定条件时,在原有插入操作的基础上,将与插入值为空值的目标列相关的语句删除,重新生成目标插入操作,根据所述目标插入操作进行数据同步。
在实际应用场景下,当待执行表的目标列插入空值时,可以被优化,针对待同步事务,可以根据各行中插入值为空值的目标列的分布情况,在原有插入操作的基础上,将与插入值为空值的目标列相关的语句删除,重新生成目标插入操作,根据所述目标插入操作进行数据同步。
为了便于理解本方案,以待执行表为某个省高考成绩表为例进行解释说明,该高考成绩表设置有姓名列、学号列以及N个空列,待同步事务为在该高考成绩表中插入100万行,每行中各列均插入空值。首先,待同步事务是对单个待执行表的插入操作,满足优化条件,然后,N个空列的列定义为空值,满足优化条件,将N个空列均标记为目标列。在各行中N个空列的插入值均为空值,则可以将目标列相关的语句删除,重新生成目标插入操作,根据所述目标插入操作进行数据同步,在很大程度上减少了插入语句,可以提高数据同步的效率。
在本实施例中,通过减少INSERT语句中,需要填充列的个数来提高执行性能,那些被剔除的列在插入时,数据库会默认填入NULL值,不需要在SQL语句中显示的指定,可以提高同步的性能。
在实际应用场景下,如果对所有事务都通过详细分析每个INSERT操作来判断是否能优化,这将会消耗大量的CPU,反而会降低同步性能,在优选的实施例中,采用预判断的方式过滤出符合优化的同步场景,做到有针对性的优化。
在优选的实施例中,在步骤102之后,步骤103之前,还包括如下步骤:若所述待执行表存在列定义不带默认值或者列定义的默认值为空值的目标列,则计算所述待同步事务的第一个插入操作中,插入值为空值的目标列的占比率。
然后,判断所述占比率是否大于设定值,其中,所述设定值可以依据实际情况而定,在此不做具体限定,例如,设定值为50%或60%。
若所述占比率大于设定值,则执行分析所述待同步事务的各个插入操作,获取插入值为空值的目标列在各个插入操作的分布情况的步骤。
在可选的实施例中,待同步事务中的每个插入操作均对应有操作编号,通过该操作编号可以确定每个操作的操作顺序。先从第一个插入操作开始分析,得到相应的第一分布标记组,以第一分布标记组为参照对象,按照插入操作的操作顺序,依次得到相应的分布标记组,在下一个插入操作的分布标记组与所述第一分布标记组一致时,继续分析下一个插入操作,直至事务结束,或者,直至下一个插入操作的分布标记组与所述第一分布标记组不一致,从而得到插入值为空值的目标列在各个插入操作的分布情况。
结合图2,在步骤103中,具体包括如下步骤:
步骤A:分析所述待同步事务中的第一个插入操作,绘制插入值为空值的目标列在整行的分布情况,得到第一分布标记组。
步骤B:分析所述待同步事务的第N个插入操作,绘制插入值为空值的目标列在整行的分布情况,得到第N分布标记组,其中,N表示插入操作在所述待同步事务中的排列序号,N的初始值为2。
分析所述待同步事务的第二个插入操作,绘制插入值为空值的目标列在整行的分布情况,得到第二分布标记组。
步骤C:判断所述第一分布标记组和所述第N分布标记组是否一致。
在本实施例中,判断所述第一分布标记组和所述第二分布标记组是否一致,若一致,则执行步骤D;若不一致,则根据所述待同步事务中原有的插入操作进行数据同步。
步骤D:若一致,则设置N=N+1后,依次执行步骤B和步骤C,以得到插入值为空值的目标列在各个插入操作的分布情况。
当步骤D执行完成后,所述待同步事务结束,则插入值为空值的目标列在各个插入操作的分布完全一致,在原有插入操作的基础上,将与插入值为空值的目标列相关的语句删除,重新生成目标插入操作,根据所述目标插入操作进行数据同步(本发明的优化方式)。
当步骤D执行完成后,所述待同步事务中存在未被分析的插入操作,则插入值为空值的目标列在各个插入操作中的分布不完全一致,根据所述待同步事务中原有的插入操作进行数据同步(正常模式)。
具体地,判断所述待同步事务中是否存在未被分析的插入操作,若存在,根据所述待同步事务中原有的插入操作进行数据同步(正常模式);若不存在,则在原有插入操作的基础上,将与插入值为空值的目标列相关的语句删除,重新生成目标插入操作,根据所述目标插入操作进行数据同步(本发明的优化方式)。
可以理解为,在本实施例中,从第一个插入操作开始,判断第二个插入操作的分布标记组与第一分布标记组是否一致,则继续取出下一个插入操作,判断下一个插入操作的分布标记组与第一分布标记组是否一致,如此循环,若存在不一致的情况,则按照正常模式执行;直至事务结束,分布标记组均一致,则按照本发明的优化方式进行数据同步。
实施例2:
在本实施例中,以一具体实例简要说明前述方法的执行过程。源数据库和目标端数据库现都有表T(ID INT,C1INT,C2INT DEFAULT 2,..., C1000INT)
源端应用对表T进行数据初始化,分批插入100万行数据,ID列每行的取值为1到10000000,其它列全部插入NULL值。
同步过程如下:
(1)源端数据同步服务捕获到该操作日志发往目标端数据同步服务;
(2)目标端数据同步服务在收到该事务提交日志后开始执行该事务;
(3)先从目标端数据库中获取表T的列定义,发现C2列存在默认值,并且它的默认值是2,不是NULL,那么该列如果要插入NULL值则需要在 SQL语句中显示的指定;
(4)按照前面实施例1的方法进行判断,发现该事务满足优化执行的条件;
(5)按照优化规则构造出插入语句,发现C2列的插入值虽然为NULL,但是却不满足剔除条件,得到插入语句如下:INSERT INTO T(ID,C2) VALUES(:1,:2);
(6)从该事务第一个操作开始,依次根据插入语句中绑定的列,填充列值后分批执行
(7)重复第(6)步,直到碰到该事务的提交操作,完成同步。
如果上述事务,不采用该优化方案,那么它在执行时则会生成含有1001 个列的INSERT语句:INSERT INTO T(ID,C1,C2,...,C1000) VALUES(:0,:1,:2,...,:1000),该语句在绑定和填充时将会消耗大量的CPU,并且数据库在执行时也会比优化的方案消耗更多的资源,执行效率低下。
按照实施例1的方式进行优化后,通过减少INSERT语句中,需要填充列的个数来提高执行性能,那些被剔除的列在插入时,数据库会默认填入NULL值,不需要在SQL语句中显示的指定,可以提高同步的性能。
实施例3:
存在一应用场景,待同步事务在进行表的插入操作时,大多数行所对应的分布标记组相同,小部分行所对应的分布标记组不同,例如,要插100 万行数据,98万行数据都满足优化条件,第980001行与第1行的分布标记组不同,此种情况下,仍旧可以对插入操作进行优化。
参阅图3,实施例1中的步骤103具体包括如下过程:
步骤A:分析所述待同步事务中的第一个插入操作,绘制插入值为空值的目标列在整行的分布情况,得到第一分布标记组。
其中,待同步事务中的每个插入操作均对应有操作编号,通过该操作编号可以确定每个操作的操作顺序。
步骤B:分析所述待同步事务的第N个插入操作,绘制插入值为空值的目标列在整行的分布情况,得到第N分布标记组,其中,N表示插入操作在所述待同步事务中的排列序号,N的初始值为2。
分析所述待同步事务的第二个插入操作,绘制插入值为空值的目标列在整行的分布情况,得到第二分布标记组。
步骤C:判断所述第一分布标记组和所述第N分布标记组是否一致。
判断所述第一分布标记组和所述第二分布标记组是否一致,若一致,则执行步骤D。
步骤D:若一致,则设置N=N+1后,依次执行步骤B和步骤C,以得到插入值为空值的目标列在各个插入操作的分布情况。
当步骤D执行完成后,获取已经完成分布标记组分析的插入操作的数目,标记为M1;获取所述待同步事务中所包含的插入操作的总数目,标记为M2。
然后,判断M2与M1的差值是否小于预设的阈值,其中,预设的阈值可以根据实际情况而定;若小于,则按照如下方式进行数据同步:
针对前M1个插入操作,在原有插入操作的基础上,将与插入值为空值的目标列相关的语句删除,重新生成目标插入操作,根据所述目标插入操作进行数据同步;针对其余的插入操作,根据原有的插入操作进行数据同步。
在本实施例中,复用了实施例1的优化方案和正常模式,可以针对特定的应用场景进行插入操作的优化,拓宽了应用场景。
实施例4:
存在一应用场景,待同步事务在进行表的插入操作时,针对目标列,大多数行所对应的分布标记组相同,小部分行的某些目标列所对应的分布标记组不同,例如,要插100行数据,目标列为A列、B列、C列和D列,在第一行中,A列、B列、C列和D列插入值均为空值,其余99行的D列插入值不为空值,此种情况下,仍旧可以对插入操作进行优化,结合图4,具体实现过程如下。
步骤A:分析所述待同步事务中的第一个插入操作,绘制插入值为空值的目标列在整行的分布情况,得到第一分布标记组。
其中,待同步事务中的每个插入操作均对应有操作编号,通过该操作编号可以确定每个操作的操作顺序。
步骤B:分析所述待同步事务的第N个插入操作,绘制插入值为空值的目标列在整行的分布情况,得到第N分布标记组,其中,N表示插入操作在所述待同步事务中的排列序号,N的初始值为2。
分析所述待同步事务的第二个插入操作,绘制插入值为空值的目标列在整行的分布情况,得到第二分布标记组。
步骤C:判断所述第一分布标记组和所述第N分布标记组是否一致。
步骤E:若不一致,则提取所述第一分布标记组和所述第N分布标记组中,空值分布相同的目标列,以重新生成参照分布标记组;
步骤F:设置N=N+1后,分析所述待同步事务的第N个插入操作,绘制插入值为空值的目标列在整行的分布情况,得到第N分布标记组;
步骤G:判断所述第N分布标记组与所述参照分布标记组是否一致;
步骤H:若一致,则依次执行步骤F和步骤G,以得到插入值为空值的目标列在各个插入操作的分布情况。
在实际应用场景下,所述插入操作同步优化方法还包括:
当步骤H执行完成时,获取已经完成分布标记组分析的插入操作的排列序号,标记为P,获取所述参照分布标记组中的目标列,标记为优化目标列。
按照如下方式进行数据同步:
针对前P个插入操作,在原有插入操作的基础上,将与所述优化目标列相关的语句删除,重新生成目标插入操作,根据所述目标插入操作进行数据同步;针对其余的插入操作,根据原有的插入操作进行数据同步。
在本实施例中,复用了实施例1的优化方案和正常模式,可以针对特定的应用场景进行插入操作的优化,拓宽了应用场景。
实施例5:
请参阅图5,图5是本发明实施例提供的一种数据同步系统的结构示意图。本实施例的数据同步系统包括一个或多个处理器61以及存储器62。其中,图5中以一个处理器61为例。
处理器61和存储器62可以通过总线或者其他方式连接,图5中以通过总线连接为例。
存储器62作为非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如实施例1中的基于日志解析的插入操作同步优化方法以及对应的程序指令。处理器61通过运行存储在存储器62中的非易失性软件程序、指令以及模块,从而执行基于日志解析的插入操作同步优化方法的各种功能应用以及数据处理,实现前述实施例的基于日志解析的插入操作同步优化方法的功能。
其中,存储器62可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器62可选包括相对于处理器61远程设置的存储器,这些远程存储器可以通过网络连接至处理器61。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
关于基于日志解析的插入操作同步优化方法请参照前述实施例中相关的文字描述在此,不再赘述。
值得说明的是,上述装置和系统内的模块、单元之间的信息交互、执行过程等内容,由于与本发明的处理方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(Read Only Memory,简写为ROM)、随机存取存储器(RandomAccessMemory,简写为RAM)、磁盘或光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种基于日志解析的插入操作同步优化方法,其特征在于,所述插入操作同步优化方法包括:
判断待同步事务是否是针对待执行表的插入操作;
若是,则根据所述待执行表的字典信息,判断所述待执行表是否存在列定义不带默认值或者列定义的默认值为空值的目标列;
若存在,则分析所述待同步事务的各个插入操作,获取插入值为空值的目标列在各个插入操作的分布情况;包括:步骤A:分析所述待同步事务中的第一个插入操作,绘制插入值为空值的目标列在整行的分布情况,得到第一分布标记组;步骤B:分析所述待同步事务的第N个插入操作,绘制插入值为空值的目标列在整行的分布情况,得到第N分布标记组,其中,N表示插入操作在所述待同步事务中的排列序号,N的初始值为2;步骤C:判断所述第一分布标记组和所述第N分布标记组是否一致;步骤D:若一致,则设置N=N+1后,依次执行步骤B和步骤C,以得到插入值为空值的目标列在各个插入操作的分布情况;当步骤D执行完成后,所述待同步事务结束,则插入值为空值的目标列在各个插入操作的分布完全一致;
当步骤D执行完成后,所述待同步事务中存在未被分析的插入操作,则插入值为空值的目标列在各个插入操作中的分布不完全一致;
当插入值为空值的目标列在各个插入操作的分布完全一致时,在原有插入操作的基础上,将与插入值为空值的目标列相关的语句删除,重新生成目标插入操作,根据所述目标插入操作进行数据同步。
2.根据权利要求1所述的插入操作同步优化方法,其特征在于,判断所述待执行表是否存在列定义不带默认值或者列定义的默认值为空值的目标列之后还包括:
若存在,则计算所述待同步事务的第一个插入操作中,插入值为空值的目标列的占比率;
判断所述占比率是否大于设定值;
若所述占比率大于设定值,则执行分析所述待同步事务的各个插入操作,获取插入值为空值的目标列在各个插入操作的分布情况的步骤。
3.根据权利要求1所述的插入操作同步优化方法,其特征在于,所述插入操作同步优化方法包括:
当插入值为空值的目标列在各个插入操作的分布不完全一致时,根据所述待同步事务中原有的插入操作进行数据同步。
4.根据权利要求1所述的插入操作同步优化方法,其特征在于,所述插入操作同步优化方法包括:
当步骤D执行完成后,获取已经完成分布标记组分析的插入操作的数目,标记为M1;
获取所述待同步事务中所包含的插入操作的总数目,标记为M2;
判断M2与M1的差值是否小于预设的阈值;
若小于,则按照如下方式进行数据同步:
针对前M1个插入操作,在原有插入操作的基础上,将与插入值为空值的目标列相关的语句删除,重新生成目标插入操作,根据所述目标插入操作进行数据同步;
针对其余的插入操作,根据原有的插入操作进行数据同步。
5.根据权利要求1所述的插入操作同步优化方法,其特征在于,在步骤C:判断所述第一分布标记组和所述第N分布标记组是否一致,之后还包括:
若不一致,则根据所述待同步事务中原有的插入操作进行数据同步;
或,
步骤E:若不一致,则提取所述第一分布标记组和所述第N分布标记组中,空值分布相同的目标列,以重新生成参照分布标记组;
步骤F:设置N=N+1后,分析所述待同步事务的第N个插入操作,绘制插入值为空值的目标列在整行的分布情况,得到第N分布标记组;
步骤G:判断所述第N分布标记组与所述参照分布标记组是否一致;
步骤H:若一致,则依次执行步骤F和步骤G,以得到插入值为空值的目标列在各个插入操作的分布情况。
6.根据权利要求5所述的插入操作同步优化方法,其特征在于,所述插入操作同步优化方法还包括:
当步骤H执行完成时,获取已经完成分布标记组分析的插入操作的排列序号,标记为P,获取所述参照分布标记组中的目标列,标记为优化目标列;
按照如下方式进行数据同步:
针对前P个插入操作,在原有插入操作的基础上,将与所述优化目标列相关的语句删除,重新生成目标插入操作,根据所述目标插入操作进行数据同步;
针对其余的插入操作,根据原有的插入操作进行数据同步。
7.根据权利要求1所述的插入操作同步优化方法,其特征在于,所述判断待同步事务是否是针对待执行表的插入操作之后还包括:
若不是,则根据所述待同步事务原有的DML操作进行数据同步。
8.一种数据同步系统,其特征在于,所述数据同步系统包括至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被程序设置为执行如权利要求1~7任一项所述的插入操作同步优化方法。
CN202010328622.2A 2020-04-23 2020-04-23 基于日志解析的插入操作同步优化方法和数据同步系统 Active CN111737341B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010328622.2A CN111737341B (zh) 2020-04-23 2020-04-23 基于日志解析的插入操作同步优化方法和数据同步系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010328622.2A CN111737341B (zh) 2020-04-23 2020-04-23 基于日志解析的插入操作同步优化方法和数据同步系统

Publications (2)

Publication Number Publication Date
CN111737341A CN111737341A (zh) 2020-10-02
CN111737341B true CN111737341B (zh) 2024-02-09

Family

ID=72646712

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010328622.2A Active CN111737341B (zh) 2020-04-23 2020-04-23 基于日志解析的插入操作同步优化方法和数据同步系统

Country Status (1)

Country Link
CN (1) CN111737341B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5590324A (en) * 1995-02-07 1996-12-31 International Business Machines Corporation Optimization of SQL queries using universal quantifiers, set intersection, and max/min aggregation in the presence of nullable columns
CN105786955A (zh) * 2015-01-08 2016-07-20 国际商业机器公司 数据库管理系统中的数据复制
CN109933630A (zh) * 2019-03-19 2019-06-25 武汉达梦数据库有限公司 数据库数据实时同步方法及设备
CN110968593A (zh) * 2019-12-10 2020-04-07 上海达梦数据库有限公司 数据库sql语句优化方法、装置、设备和存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9047354B2 (en) * 2008-07-31 2015-06-02 Sybase, Inc. Statement categorization and normalization
US9720992B2 (en) * 2013-11-22 2017-08-01 Sap Se DML replication with logical log shipping
US10824519B2 (en) * 2018-04-16 2020-11-03 Sap Se Database recovery and optimization with batch processing

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5590324A (en) * 1995-02-07 1996-12-31 International Business Machines Corporation Optimization of SQL queries using universal quantifiers, set intersection, and max/min aggregation in the presence of nullable columns
CN105786955A (zh) * 2015-01-08 2016-07-20 国际商业机器公司 数据库管理系统中的数据复制
CN109933630A (zh) * 2019-03-19 2019-06-25 武汉达梦数据库有限公司 数据库数据实时同步方法及设备
CN110968593A (zh) * 2019-12-10 2020-04-07 上海达梦数据库有限公司 数据库sql语句优化方法、装置、设备和存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
MySQL数据库优化技术;李仕伟;周坤;刘新蕊;李宝林;;信息与电脑(理论版)(12);173-174 *
武仁杰.Web程序设计.北京:中国铁道出版社,2009,205. *

Also Published As

Publication number Publication date
CN111737341A (zh) 2020-10-02

Similar Documents

Publication Publication Date Title
CN109739894B (zh) 补充元数据描述的方法、装置、设备及存储介质
CN109933630B (zh) 数据库数据实时同步方法及设备
CN105550293B (zh) 一种基于Spark‑SQL大数据处理平台的后台刷新方法
CN109902126B (zh) 支持hive自动分区的加载系统及其实现方法
CN108121827B (zh) 一种全量数据的同步方法及装置
CN111767327B (zh) 数据流间具有依赖关系的数据仓库构建方法与系统
CN112286941B (zh) 一种基于Binlog+HBase+Hive的大数据同步方法和装置
CN106682036A (zh) 一种数据交换系统及其交换方法
US20150278310A1 (en) Database device
CN111694798B (zh) 一种基于日志解析的数据同步方法及数据同步系统
CN109144950B (zh) 业务数据的存储方法和装置
CN110688378A (zh) 数据库存储过程的迁移方法及系统
CN111694799B (zh) 基于日志解析同步的并行日志解析方法和数据同步系统
CN107798025B (zh) 存储过程的运行、编译方法、装置和数据库系统
CN111737341B (zh) 基于日志解析的插入操作同步优化方法和数据同步系统
CN111858504B (zh) 基于日志解析同步的操作合并执行方法和数据同步系统
CN110196786B (zh) 数据库回滚同步中内存的控制方法及设备
CN111159020B (zh) 一种应用于同步软件测试的方法和装置
CN110932929B (zh) Ccsds体制卫星遥测包分类提取方法、系统及介质
CN106293862B (zh) 一种可扩展标记语言xml数据的解析方法和装置
CN115688906A (zh) 一种面向超参训练的数据自动编排加载方法和系统
CN112035464B (zh) 一种基于日志解析的数据同步的过滤方法和同步装置
CN102819588A (zh) 一种应用于Oracle数据库的动态数据处理方法
CN112667744B (zh) 一种数据库中数据批量同步更新的方法和装置
CN112905462A (zh) 一种仿真中数据处理的方法和装置

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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 430000 16-19 / F, building C3, future technology building, 999 Gaoxin Avenue, Donghu New Technology Development Zone, Wuhan, Hubei Province

Applicant after: Wuhan dream database Co.,Ltd.

Address before: 430000 16-19 / F, building C3, future technology building, 999 Gaoxin Avenue, Donghu New Technology Development Zone, Wuhan, Hubei Province

Applicant before: WUHAN DAMENG DATABASE Co.,Ltd.

CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Huang Haiming

Inventor after: Sun Feng

Inventor after: Yu Yuanlan

Inventor before: Fu Quan

Inventor before: Huang Haiming

Inventor before: Sun Feng

Inventor before: Yu Yuanlan

GR01 Patent grant
GR01 Patent grant