CN113590621B - 一种数据库表比对方法及装置 - Google Patents
一种数据库表比对方法及装置 Download PDFInfo
- Publication number
- CN113590621B CN113590621B CN202110845737.3A CN202110845737A CN113590621B CN 113590621 B CN113590621 B CN 113590621B CN 202110845737 A CN202110845737 A CN 202110845737A CN 113590621 B CN113590621 B CN 113590621B
- Authority
- CN
- China
- Prior art keywords
- export
- data
- records
- target
- source
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 31
- 239000012634 fragment Substances 0.000 claims abstract description 31
- 230000007958 sleep Effects 0.000 claims abstract description 18
- 230000005059 dormancy Effects 0.000 claims description 29
- 238000000605 extraction Methods 0.000 claims description 28
- 230000008030 elimination Effects 0.000 claims description 12
- 238000003379 elimination reaction Methods 0.000 claims description 12
- 230000004622 sleep time Effects 0.000 claims description 3
- 238000012935 Averaging Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000013075 data extraction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据库表比对方法及装置,所述方法包括如下步骤:步骤S1,分别对源端和目标端的数据库表的数据进行任务拆分,将数据库表分成若干分片,并记录源端和目标端的任务分片数量;步骤S2,分别利用若干导出线程从源端和目标端的数据库表中按分片抽取数据记录,并分别实时记录双方导出记录的总数,根据双方导出记录的总数出导出速度快的一方,并计算双方导出记录数量总和的差值,当双方导出记录数量总和的差值达到门限值时,令导出速度快的一方暂时休眠预设时间再执行导出线程;步骤S3,执行对比线程对导入内存中的数据进行源端与目标端的数据库表数据比对。
Description
技术领域
本发明涉及计算机数据备份容灾技术领域,特别是涉及一种在对数据库进行表对比时维持源端和目标端抽取数据速度均衡的数据库表比对方法及装置。
背景技术
在数据库实时同步的过程中,经常需要验证某张表的同步数据是否一致,即需要对比源库表和目标库对应表的数据记录。
现有技术中,通常在进行表对比时,会先由不同的导出线程抽取源端和目标端表的数据记录,并将其放在内存中进行消重(具体的消重方法不在本发明讨论的范围之内)。当内存中的数据记录超过一定限制时,会将这些数据写入磁盘,等到双方数据全部导出后将磁盘保存的数据装入内存进行比较,读写磁盘的过程会引入额外的IO,导致效率降低。
其中,表对比效率低存在源端和目标端双方抽取速度不均衡、双方数据记录的内容存在很多不同、双方的数据记录行数有很大差异、对比线程的消重速度慢等多种原因。本发明主要考虑解决第一种原因导致的表对比效率低。
源库表和目标库对应表双方导出记录的速度不一致,会导致在对比线程首次比较数据时,另一方的数据尚未抽取出来,进而导致需要多次比较这些数据,如果消重后残留在内存的数据过多还会存入磁盘;当双方数据记录顺序一致时,因双方导出速度不均衡而需要多次比较,对运行效率的影响很大。对于一些有数千万甚至更多条记录的大容量数据表,这样的情况会使得表对比效率低下的现象更加严重。
发明内容
为克服上述现有技术存在的不足,本发明之目的在于提供一种数据库表比对方法及装置,通过控制源端和目标端中抽取速度快的一方的速度,使源端与目标端双方的抽取速度基本均衡,从而提高数据库表比对的效率。
为达上述目的,本发明提供一种数据库表比对方法,包括如下步骤:
步骤S1,分别对源端和目标端的数据库表的数据进行任务拆分,将数据库表分成若干分片,并记录源端和目标端的任务分片数量;
步骤S2,分别利用若干导出线程从源端和目标端的数据库表中按分片抽取数据记录,并分别实时记录双方导出记录的总数,根据双方导出记录的总数出导出速度快的一方,并计算双方导出记录数量总和的差值,当双方导出记录数量总和的差值达到门限值时,令导出速度快的一方暂时休眠预设时间再执行导出线程;
步骤S3,执行对比线程对导入内存中的数据进行源端与目标端的数据库表数据比对。
优选地,所述门限值的初始值在数据库表对比开始之前根据抽取线程数量、抽取速度、内存中可存放的记录总数进行计算并提前配置。
优选地,所述门限值在b*v2*t到50万之间取值,其中,b为慢的一方的导出线程,v2为慢的一方平均每个线程的导出速度,t为快的一方的线程每次休眠时间。
优选地,于步骤S2中,在各导出线程导出数据记录的过程中,分别统计源端与目标端导出时的各自休眠次数,根据源端与目标端的休眠次数调节门限值。
优选地,如果记录的源端与目标端的休眠次数都不为0,则调大所述门限值,并返回步骤S1或将本次表对比执行完毕后再返回步骤S1。
优选地,当源端和目标端中有一方的记录导出完毕,则剩余的一方不再进行双方导出记录数量总和的差值与门限值的判断,也不再休眠。
优选地,在源端与目标端各导出线程执行各自任务分片导出时,每当一个任务分片导出完毕,则使相应端的任务分片数量减一,若某方的任务分片数量减为0,则判断该端的整个数据库表导出完毕。
优选地,于步骤S3中,当源端与目标端导出到内存的数据数量到达预设阈值时,执行对比线程对导入内存中的源端和目标端的数据进行对比消重,若经对比消重后内存的数据仍超过限制,将内存中的数据存入磁盘。
优选地,当源端与目标端的数据记录均导出完毕,将存入磁盘的数据导入内存,执行对比线程对内存的数据进行对比。
为达到上述目的,本发明还提供一种数据库表比对装置,包括:
任务拆分模组,用于分别利用第一任务拆分单元、第二任务拆分单元分别对源端和目标端的数据库表的数据进行任务拆分,将数据库表分成若干分片,并记录源端和目标端的任务分片数量;
导出模组,包括源端导出模组及目标端导出模组,分别利用若干导出线程从源端和目标端的数据库表中按分片抽取数据记录,并分别实时记录双方导出记录的总数,根据双方导出记录的总数判断己方的导出速度是否比对方快,当己方的导出速度比对方快且己方导出记录数量总和与对方的导出记录数量总和的差值达到门限值,则让己方导出线程暂时休眠预设时间再进行导出;
对比模组,用于执行对比线程对导入内存中的数据进行源端与目标端的数据库表数据比对。
与现有技术相比,本发明一种数据库表比对方法及装置通过分别利用若干导出线程从源端和目标端的数据库表中按分片抽取数据记录,分别实时记录双方导出记录的总数,根据双方导出记录的总数出导出速度快的一方,并计算双方导出记录数量总和的差值,当双方导出记录数量总和的差值达到门限值时,令导出速度快的一方暂时休眠预设时间再执行导出线程,从而通过控制源端和目标端中抽取速度快的一方的速度,使源端与目标端双方的抽取速度基本均衡,达到提高数据库表比对的效率的目的。
附图说明
图1为本发明一种数据库表比对方法的步骤流程图;
图2为本发明一种数据库表比对装置的系统架构图。
具体实施方式
以下通过特定的具体实例并结合附图说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。
图1为本发明一种数据库表比对方法的步骤流程图。如图1所示,本发明一种数据库表比对方法,包括如下步骤:
步骤S1,分别对源端和目标端的数据库表的数据进行任务拆分,将数据库表分成若干分片,并记录源端和目标端的任务分片数量。
在本发明中,分别对源端的源数据库表和目标端的目标数据库表进行拆分,例如分别将各端的数据库表拆分为n个分片,并记录源端和目标端的任务分片数量n,两端数据库表拆分的分片数量可以不一致,但为了更好提高数据对比的效率,本发明实施例中对两端数据库表拆分的分片数量相同。
步骤S2,分别利用若干导出线程从源端和目标端的数据库表中按分片抽取数据记录,并分别实时记录双方导出记录的总数,根据双方导出记录的总数判断己方的导出速度是否比对方快,当己方的导出速度比对方快且己方导出记录数量总和与对方的导出记录数量总和的差值达到门限值,则让己方导出线程暂时休眠预设时间再进行导出。
在本发明具体实施例中,假设源端和目标端各有10个导出线程(两端导出线程数量可以不同,但最好一致),则源端的10个导出线程分别从源端的源数据库表中按分片(假设每个导出线程负责n/10个分片,分片可以不平均,但最好平均)抽取数据记录,同时目标端的10个导出线程也分别从目标端的目标数据库表中按分片(假设每个导出线程负责n/10个分片)抽取数据记录,同时分别实时源端和目标端导出记录的总数(对于源端来说,即10个导出线程导出记录的总数,对于目标端来说,也是10个导出线程导出记录的总数),判断导出记录总数大的一方导出速度快(由于源端和目标端所有的导出线程在同一个进程下(它们是远程连接到数据库进行导出),通过互斥锁对内存的变量进行读写即可获得双方的导出记录总数),并计算导出速度快的一方与导出速度慢的一方的导出记录数量总和的差值,若该差值达到门限值,则让导出速度快的一方暂时休眠预设时间,例如让导出速度快的一方暂时休眠1毫秒。
在本发明具体实施例中,门限值需要在表对比开始之前根据抽取线程数量、抽取速度、内存中可存放的记录总数等进行计算并提前配置。它的设定要考虑两个因素:第一,不能影响对比速度,让快的一方暂时休眠,但仍让其的抽取进度保持一定的超前,保证双方的残留记录较为均衡,所以这个值不能太小,太小的话休眠之后,慢方的进度就会超过快方;第二,单个队列的长度有限,超过一定限度之后会将数据存入磁盘,因此这个数值不能太小。
具体地,假设源端有a个导出线程,平均每个线程的导出速度为v1条/毫秒;目标端有b个导出线程,平均每个线程的导出速度为v2条/毫秒,设定快的线程每次休眠t毫秒。假定源端导出速度快,即v1>v2,快的一方的线程每全部休眠一次,慢的一方总计可以抽取b*v2*t条记录。为保证快的一方在休眠后的抽取进度仍处于领先状态,快的一方在休眠时抽取的记录总数与慢的一方的差值不能小于b*v2*t,即门限值的下限为b*v2*t条记录。通常,快的一方的记录总数比慢的一方多50万是可以接受的,双方导出速度大体接近,即门限值的上限为50万条记录,所以门限值可以在b*v2*t到50万之间取值。在本发明具体实施例中,门限值初始默认值设置为16万。
例如,源端和目标端各有10个导出线程,其中慢的一方每线程每秒导出100万行记录,内存中可存放400万条记录。快的线程每次休眠1毫秒。它们每全部休眠一次,慢的一方总计可以抽取1万条记录。通常,门限值的上限为50万条记录,在本例中快的一方的记录总数:慢的一方的记录总数=225万:175万。为保证快的一方在休眠后的抽取进度仍处于领先状态,快的一方抽取的记录总数与慢的一方的差值不能小于1万。即门限值的下限为1万条记录,所以门限值可以在1万到50万之间取值。
优选地,于步骤S2中,在导出线程导出数据记录过程中,分别统计源端与目标端导出时的各自休眠次数,根据源端与目标端的休眠次数调节门限值。在本发明具体实施例中,于内存中分别记录源端和目标端导出时的休眠次数,如果源端与目标端的休眠次数都不为0,则需要调大门限值。正常情况是一方有值、另一方为零,如果双方都有值,说明抽取快的一方在休眠后被慢的一方超过,因此则需要调大门限值;如果双方都为零,说明双方的抽取速度基本均衡,即只有在双方的休眠次数都不为0时才需调节门限值。当需要调大门限值时,可根据经验先将门限值增大10%,返回步骤S1重新执行表对比。具体地来说,若调整后只有一方有值,说明门限值处于合理的区间内,否则需要继续增大,直到只有一方有值而另一方为零。需注意的是,调整门限值时一般不能超过上限。在实际使用过程中,进行表对比,当发现对比效率不如预期,根据日志发现双方都有休眠,则调大门限值,让本次表对比执行完毕,再返回步骤S1执行下次表对比,当然也可以立即停止并返回步骤S1,本发明不以此为限。
优选地,当源端和目标端中有一方的记录已导出完毕时,剩余的一方则不再对门限值进行判断,即不再休眠。
步骤S3,执行对比线程对导入内存中的数据进行源端与目标端的数据库表数据比对。
具体地说,当源端与目标端导出到内存的数据到达一定限制(例如达到预设的阈值)时,则执行对比线程对导入内存中的源端和目标端的数据进行对比消重,若经对比消重后内存的数据仍超过限制,则将内存中的数据存入磁盘(若未超限制则保留在内存中)。
当源端与目标端的数据记录均导出完毕,会将存入磁盘的数据导入内存,并执行对比线程对内存的数据进行对比。
经过步骤S2的调整后,源端和目标端的抽取速度较为均衡,对比线程更可能在首次比较数据时就完成对比,不需要多次比较数据,也无需将数据再保存在内存或磁盘中,提高了大表对比的效率。
图2为本发明一种数据库表比对装置的系统架构图。如图2所示,本发明一种数据库表比对装置,包括:
任务拆分模组201,用于分别利用第一任务拆分单元、第二任务拆分单元分别对源端和目标端的数据库表的数据进行任务拆分,将数据库表分成若干分片,并记录源端和目标端的任务分片数量。
在本发明中,第一任务拆分单元、第二任务拆分单元分别设置于源端与目标端,分别对源端的源数据库表和目标端的目标数据库表进行拆分,例如分别将各端的数据库表拆分为n个分片,并记录源端和目标端的任务分片数量n。
导出模组202,包括源端导出模组及目标端导出模组,分别利用若干导出线程从源端和目标端的数据库表中按分片抽取数据记录,并分别实时记录双方导出记录的总数,根据双方导出记录的总数判断己方的导出速度是否比对方快,当己方的导出速度比对方快且己方导出记录数量总和与对方的导出记录数量总和的差值达到门限值,则让己方导出线程暂时休眠预设时间再进行导出。
在本发明具体实施例中,假设源端导出模组和目标端导出模组各有10个导出线程,则源端导出模组的10个导出线程分别从源端的源数据库表中按分片(假设每个导出线程负责n/10个分片)抽取数据记录,同时目标端导出模组的10个导出线程也分别从目标端的目标数据库表中按分片(假设每个导出线程负责n/10个分片)抽取数据记录,同时分别实时源端和目标端导出记录的总数(对于源端来说,即10个导出线程导出记录的总数,对于目标端来说,也是10个导出线程导出记录的总数),判断导出记录总数大的一方导出速度快,并计算导出速度快的一方与导出速度慢的一方的导出记录数量总和的差值,若该差值达到门限值,则让导出速度快的一方暂时休眠预设时间,例如让导出速度快的一方暂时休眠1毫秒。
在本发明具体实施例中,门限值需要在表对比开始之前根据抽取线程数量、抽取速度、内存中可存放的记录总数等进行计算并提前配置。它的设定要考虑两个因素:第一,不能影响对比速度,让快的一方暂时休眠,但仍让其的抽取进度保持一定的超前,保证双方的残留记录较为均衡,所以这个值不能太小,太小的话休眠之后,慢方的进度就会超过快方;第二,单个队列的长度有限,超过一定限度之后会将数据存入磁盘,因此这个数值不能太小。
具体地,假设源端有a个导出线程,平均每个线程的导出速度为v1条/毫秒;目标端有b个导出线程,平均每个线程的导出速度为v2条/毫秒,设定快的线程每次休眠t毫秒。假定源端导出速度快,即v1>v2,快的一方的线程每全部休眠一次,慢的一方总计可以抽取b*v2*t条记录。为保证快的一方在休眠后的抽取进度仍处于领先状态,快的一方在休眠时抽取的记录总数与慢的一方的差值不能小于b*v2*t,即门限值的下限为b*v2*t条记录。通常,快的一方的记录总数比慢的一方多50万是可以接受的,双方导出速度大体接近,即门限值的上限为50万条记录,所以门限值可以在b*v2*t到50万之间取值。在本发明具体实施例中,门限值初始默认值设置为16万。
例如,源端和目标端各有10个导出线程,其中慢的一方每线程每秒导出100万行记录,内存中可存放400万条记录。快的线程每次休眠1毫秒。它们每全部休眠一次,慢的一方总计可以抽取1万条记录。通常,门限值的上限为50万条记录,在本例中快的一方的记录总数:慢的一方的记录总数=225万:175万。为保证快的一方在休眠后的抽取进度仍处于领先状态,快的一方抽取的记录总数与慢的一方的差值不能小于1万。即门限值的下限为1万条记录,所以门限值可以在1万到50万之间取值。
优选地,在导出线程导出数据记录过程中,源端导出模组及目标端导出模组分别统计源端与目标端导出时的各自休眠次数,本发明之数据库表比对装置还包括门限值调节单元,用于根据源端与目标端的休眠次数调节门限值。在本发明具体实施例中,源端导出模组及目标端导出模组分别统计的源端与目标端导出时的各自休眠次数记录于内存中,如果源端与目标端的休眠次数都不为0,则门限值调节单元会将门限值调大。正常情况是一方有值、另一方为零,如果双方都有值,说明抽取快的一方在休眠后被慢的一方超过,所以需要调大门限值;如果双方都为零,说明双方的抽取速度基本均衡。当需要调大门限值时,门限值调节单元可根据经验先将门限值增大10%,并重新返回导出模组202继续导出数据以执行表对比,监测源端与目标端的休眠次数,若调整后只有一方有值,说明门限值处于合理的区间内,否则需要继续增大,直到只有一方有值而另一方为零。需注意的是,调整门限值时一般不能超过上限。
优选地,当源端导出模组或目标端导出模组判断出对方的数据记录已导出完毕,则不再对门限值进行判断,即不进行休眠处理。在本发明具体实施例中,若某端的任务分片数量减为0,说明该端的整个表导出完毕,则剩余的一方不再对门限值进行判断,即不再休眠。
对比模组203,用于执行对比线程对导入内存中的数据进行源端与目标端的数据库表数据比对。
具体地说,当源端与目标端导出到内存的数据到达一定限制(例如达到预设的阈值)时,对比模组203则执行对比线程对导入内存中的源端和目标端的数据进行对比消重,若经对比消重后内存的数据仍超过限制,则将内存中的数据存入磁盘(若未超限制则保留在内存中)。
当源端与目标端的数据记录均导出完毕,对比模组203将存入磁盘的数据导入内存,执行对比线程对内存的数据进行对比。
经过导出模组202的调整后,源端和目标端的抽取速度较为均衡,对比线程更可能在首次比较数据时就完成对比,不需要多次比较数据,也不需要将数据再保存在内存或磁盘中,提高了大数据表对比的效率。
实施例
在本实施例中,一种数据库表比对方法,步骤如下:
步骤一,对源端和目标端的数据进行任务拆分,将表分成若干分片,并记录源端和目标端的任务分片数量。
步骤二,利用不同的导出线程分别从源端和目标端的表中按分片抽取数据记录,分别实时记录双方导出记录的总数,并判断己方的导出速度是否比对方快。当己方的导出速度比对方快,且己方导出记录数量总和与对方的差值达到门限值时,让己方休眠1毫秒。
步骤三,每当一个任务分片导出完毕,则使该方的任务分片数量减一。
步骤四,如果某方的任务分片数量减为0,说明该方的整个表导出完毕,则剩余的一方不再对门限值进行判断,即不再休眠。
经过上述调整后,源端和目标端的抽取速度则较为均衡,对比线程更可能在首次比较数据时就完成对比,不需要多次比较数据,也不需要将数据再保存在内存或磁盘中,提高了大表对比的效率。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此,本发明的权利保护范围,应如权利要求书所列。
Claims (9)
1.一种数据库表比对方法,包括如下步骤:
步骤S1,分别对源端和目标端的数据库表的数据进行任务拆分,将数据库表分成若干分片,并记录源端和目标端的任务分片数量;
步骤S2,分别利用若干导出线程从源端和目标端的数据库表中按分片抽取数据记录,并分别实时记录双方导出记录的总数, 根据双方导出记录的总数出导出速度快的一方,并计算双方导出记录数量总和的差值,当双方导出记录数量总和的差值达到门限值时,令导出速度快的一方暂时休眠预设时间再执行导出线程;在各导出线程导出数据记录的过程中,分别统计源端与目标端导出时的各自休眠次数,根据源端与目标端的休眠次数调节门限值;
步骤S3,执行对比线程对导入内存中的数据进行源端与目标端的数据库表数据比对。
2.如权利要求1所述的一种数据库表比对方法,其特征在于:所述门限值的初始值在数据库表对比开始之前根据抽取线程数量、抽取速度、内存中可存放的记录总数进行计算并配置。
3.如权利要求2所述的一种数据库表比对方法,其特征在于:所述门限值在b*v2*t到50万之间取值,其中,b为慢的一方的导出线程个数,v2为慢的一方平均每个线程的导出速度,t为快的一方的线程每次休眠时间。
4.如权利要求1所述的一种数据库表比对方法,其特征在于:如果记录的源端与目标端的休眠次数都不为0,则调大所述门限值,并返回步骤S1或将本次表对比执行完毕后再返回步骤S1。
5.如权利要求2所述的一种数据库表比对方法,其特征在于:当源端和目标端中有一方的记录导出完毕,则剩余的一方不再进行双方导出记录数量总和的差值与门限值的判断,也不再休眠。
6.如权利要求5所述的一种数据库表比对方法,其特征在于:在源端与目标端各导出线程执行各自任务分片导出时,每当一个任务分片导出完毕,则使相应端的任务分片数量减一,若某方的任务分片数量减为0,则判断该端的整个数据库表导出完毕。
7.如权利要求1所述的一种数据库表比对方法,其特征在于:于步骤S3中,当源端与目标端导出到内存的数据数量到达预设阈值时,执行对比线程对导入内存中的源端和目标端的数据进行对比消重,若经对比消重后内存的数据仍超过限制,将内存中的数据存入磁盘。
8.如权利要求7所述的一种数据库表比对方法,其特征在于:当源端与目标端的数据记录均导出完毕,将存入磁盘的数据导入内存,执行对比线程对内存的数据进行对比。
9.一种数据库表比对装置,包括:
任务拆分模组,用于分别利用第一任务拆分单元、第二任务拆分单元分别对源端和目标端的数据库表的数据进行任务拆分,将数据库表分成若干分片,并记录源端和目标端的任务分片数量;
导出模组,包括源端导出模组及目标端导出模组,分别利用若干导出线程从源端和目标端的数据库表中按分片抽取数据记录,并分别实时记录双方导出记录的总数, 根据双方导出记录的总数判断己方的导出速度是否比对方快,当己方的导出速度比对方快且己方导出记录数量总和与对方的导出记录数量总和的差值达到门限值,则让己方导出线程暂时休眠预设时间再进行导出;在各导出线程导出数据记录的过程中,分别统计源端与目标端导出时的各自休眠次数,根据源端与目标端的休眠次数调节门限值;
对比模组,用于执行对比线程对导入内存中的数据进行源端与目标端的数据库表数据比对。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110845737.3A CN113590621B (zh) | 2021-07-26 | 2021-07-26 | 一种数据库表比对方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110845737.3A CN113590621B (zh) | 2021-07-26 | 2021-07-26 | 一种数据库表比对方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113590621A CN113590621A (zh) | 2021-11-02 |
CN113590621B true CN113590621B (zh) | 2024-01-23 |
Family
ID=78250104
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110845737.3A Active CN113590621B (zh) | 2021-07-26 | 2021-07-26 | 一种数据库表比对方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113590621B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101968748A (zh) * | 2010-09-17 | 2011-02-09 | 北京星网锐捷网络技术有限公司 | 多线程数据调度方法、装置及网络设备 |
CN108509259A (zh) * | 2018-01-29 | 2018-09-07 | 深圳壹账通智能科技有限公司 | 获取多方数据源的方法以及风控系统 |
CN110008262A (zh) * | 2019-02-02 | 2019-07-12 | 阿里巴巴集团控股有限公司 | 一种数据导出方法及装置 |
CN111045814A (zh) * | 2018-10-11 | 2020-04-21 | 华为技术有限公司 | 资源调度方法和终端设备 |
CN111078672A (zh) * | 2019-12-20 | 2020-04-28 | 中国建设银行股份有限公司 | 数据库的数据对比方法及装置 |
CN111124641A (zh) * | 2019-12-12 | 2020-05-08 | 中盈优创资讯科技有限公司 | 一种利用多线程的数据处理方法及系统 |
CN112527776A (zh) * | 2020-12-18 | 2021-03-19 | 杭州数澜科技有限公司 | 数据稽核方法、装置及存储介质 |
-
2021
- 2021-07-26 CN CN202110845737.3A patent/CN113590621B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101968748A (zh) * | 2010-09-17 | 2011-02-09 | 北京星网锐捷网络技术有限公司 | 多线程数据调度方法、装置及网络设备 |
CN108509259A (zh) * | 2018-01-29 | 2018-09-07 | 深圳壹账通智能科技有限公司 | 获取多方数据源的方法以及风控系统 |
CN111045814A (zh) * | 2018-10-11 | 2020-04-21 | 华为技术有限公司 | 资源调度方法和终端设备 |
CN110008262A (zh) * | 2019-02-02 | 2019-07-12 | 阿里巴巴集团控股有限公司 | 一种数据导出方法及装置 |
CN111124641A (zh) * | 2019-12-12 | 2020-05-08 | 中盈优创资讯科技有限公司 | 一种利用多线程的数据处理方法及系统 |
CN111078672A (zh) * | 2019-12-20 | 2020-04-28 | 中国建设银行股份有限公司 | 数据库的数据对比方法及装置 |
CN112527776A (zh) * | 2020-12-18 | 2021-03-19 | 杭州数澜科技有限公司 | 数据稽核方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113590621A (zh) | 2021-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103488544B (zh) | 检测慢盘的处理方法和装置 | |
CN110297866A (zh) | 基于日志分析的数据同步方法及数据同步装置 | |
CN104750703B (zh) | 一种提高数据准确性的方法和装置 | |
CN106708663A (zh) | 一种数据库自动备份方法及装置 | |
CN107679104B (zh) | 大表流式并行高速数据比对方法 | |
CN107515874A (zh) | 一种分布式非关系型数据库中同步增量数据的方法与设备 | |
CN105701190A (zh) | 一种数据同步的方法和装置 | |
CN104850480A (zh) | 高密度存储服务器硬盘性能测试的方法及装置 | |
CN109634846B (zh) | 一种etl软件测试方法和装置 | |
CN106598874A (zh) | 一种软件自动化测试方法及装置 | |
CN113297182A (zh) | 数据迁移方法、设备、存储介质及程序产品 | |
CN111785315B (zh) | 降低擦除干扰和擦除时间的方法、系统、存储介质及终端 | |
CN108121774B (zh) | 一种数据表备份方法及终端设备 | |
CN113590621B (zh) | 一种数据库表比对方法及装置 | |
KR101990329B1 (ko) | 로그 데이터 분석을 이용한 데이터베이스 복구 속도 향상 기법 및 장치 | |
CN110704236A (zh) | 芯片flash数据的在线校验方法及计算机存储介质 | |
CN105224250B (zh) | 高性能域名解析处理方法和装置 | |
CN104424326A (zh) | 一种数据处理方法及装置 | |
CN116501259A (zh) | 磁盘组双活同步方法、装置、计算机设备及存储介质 | |
CN106528364A (zh) | 基于存储器访问驱动的自动化协同验证平台的搭建方法 | |
CN115495297A (zh) | 一种服务器硬盘测试的方法及装置、电子设备、存储介质 | |
CN111209146B (zh) | 一种raid卡老化测试方法及系统 | |
CN108717509B (zh) | 一种在沙箱中提取程序衍生物的方法、装置、设备及可读介质 | |
CN106611138A (zh) | 一种ghost文件保密检查方法及装置 | |
CN111367731A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |