CN112256702A - 一种增量标识修正方法及装置 - Google Patents
一种增量标识修正方法及装置 Download PDFInfo
- Publication number
- CN112256702A CN112256702A CN202011146252.7A CN202011146252A CN112256702A CN 112256702 A CN112256702 A CN 112256702A CN 202011146252 A CN202011146252 A CN 202011146252A CN 112256702 A CN112256702 A CN 112256702A
- Authority
- CN
- China
- Prior art keywords
- data
- newly added
- added data
- target
- sequence
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 105
- 238000012937 correction Methods 0.000 title claims abstract description 35
- 230000008569 process Effects 0.000 claims description 78
- 230000008859 change Effects 0.000 claims description 37
- 238000012986 modification Methods 0.000 claims description 5
- 230000004048 modification Effects 0.000 claims description 5
- 238000002715 modification method Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000011160 research Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013481 data capture Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Images
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
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
Abstract
本申请公开了一种增量标识修正方法及装置,在检测到数据库中新增数据的情况下,获取各条新增数据的增量标识。在检测到目标新增数据所在的数据行解锁的情况下,将目标新增数据的增量标识的字段长度,从第一数值纠正为第二数值,并按照目标新增数据所在的数据行的解锁时间,在解锁排序中的序位,纠正目标新增数据的增量标识指示的序位。当外部应用获取新增数据时,因增量标识所指示的顺序不再是新增数据写入数据库的顺序,而是新增数据所在数据行解锁时间由早至晚的顺序,因此,按照纠正后的标识,不会遗漏任意一条新增数据,有效解决数据遗漏问题,并且,无需重复读取已经读取到的数据,提高了增量更新的效率。
Description
技术领域
本申请涉及数据处理领域,尤其涉及一种增量标识修正方法及装置。
背景技术
企业数据仓库构建过程中,从关系型数据库获取数据通常有两种方式:一是联机事务处理(On-Line TransactionProcessing,OLTP)系统中定时获取全量数据,二是从OLTP系统中定时获取增量数据。众所周知,随着数据量堆积增长,每次获取全量数据的性能将会逐渐降低直至无法接受,因此,增量获取是日常数据仓构建过程中最常用的方式。
实现增量数据获取,需要数据源即数据仓库的上游数据,至少有一个增量标识字段,比如时间戳、或者自增长的序列字段,并在数据读取时,依据该增量标识字段的增长特性提取增量数据。如今的关系型数据库系统是一个多用户并发系统,采用的是多版本并发控制(Multi-Version Concurrency Control,mvcc)机制,即只上锁必要的数据行,便可以允许多个事务对同一张表中非上锁的行进行增删改操作(即写入数据、删除数据、修改数据),故而mvcc机制为多事务并发执行提供了便利。
目前,在增量获取数据库中的增量数据时,会重复执行读取进程,因此,已经被读取的数据会被再次读取,明显的,虽然获取的是增量数据,但因为会重复读取增量数据,所以效率有待提高。
发明内容
申请人在研究的过程中发现,在mvcc机制下实现多事务并发处理(例如多个事务并行向数据表中写入数据)过程中,由于各个事务的执行周期各不相同,个别事务会后执行并先结束,个别事务却是先执行后结束,即存在倒序现象,因此,读取增量数据时可能会发生增量数据的遗漏。所以,需要多次执行读取增量数据的过程,因此效率有待提高。
本申请提供了一种增量标识修正方法及装置,用于在多事务并发执行的情况下,通过对新增数据的增量标识进行修正,解决增量数据获取过程中因倒序现象所导致的数据遗漏以及数据读取效率不高的问题。
为了实现上述目的,本申请提供了以下技术方案:
一种增量标识修正方法,包括:
在检测到数据库中新增数据的情况下,获取各条所述新增数据的增量标识;其中,各条所述新增数据的所述增量标识用于指示,各条所述新增数据写入所述数据库的顺序,所述新增数据写入所述数据库的时间越早,则所述增量标识所指示的序位越小;
在检测到目标新增数据所在的数据行解锁的情况下,将所述目标新增数据的所述增量标识的字段长度,从第一数值纠正为第二数值;所述目标新增数据为,任意一条所述新增数据;
在检测到所述目标新增数据所在的数据行解锁的情况下,按照所述目标新增数据所在的数据行的解锁时间,在解锁排序中的序位,纠正所述目标新增数据的所述增量标识指示的所述序位,所述解锁排序为各条所述新增数据所在的数据行的解锁时间按照从早至晚的排序。
可选的,所述在检测到目标新增数据所在的数据行解锁的情况下,将所述目标新增数据的所述增量标识的字段长度,从第一数值纠正为第二数值,包括:
检测所述目标新增数据所在的数据行的变更详情,所述变更详情用于指示所述数据行处于上锁状态、或者解锁状态;
在检测到所述数据行处于解锁状态的情况下,对所述目标新增数据的所述增量标识的字段长度进行纠正,纠正前的所述字段长度为第一数值,纠正后的所述字段长度为第二数值。
可选的,所述检测所述目标新增数据所在的数据行的变更详情,包括:
利用更改跟踪进程、变更数据捕获进程、或者触发器进程,检测所述目标新增数据所在的数据行的变更详情。
可选的,所述对所述目标新增数据的所述增量标识的字段长度进行纠正,包括:
启用预设的调度工具,以触发执行预设的存储过程中预存的时序更新进程,对所述目标新增数据的所述增量标识的字段长度进行纠正;其中,所述存储过程的调度过程独立于写入进程之外,所述写入进程用于将所述目标新增数据写入所述数据库。
可选的,执行所述时序更新进程的操作为单线程操作。
可选的,所述第一数值小于所述第二数值。
可选的,所述第一数值为不大于12的正整数,所述第二数值为大于12、且小于16的正整数。
一种增量标识修正装置,包括:
获取单元,用于在检测到数据库中新增数据的情况下,获取各条所述新增数据的增量标识;其中,各条所述新增数据的所述增量标识用于指示,各条所述新增数据写入所述数据库的顺序,所述新增数据写入所述数据库的时间越早,则所述增量标识所指示的序位越小;
第一纠正单元,用于在检测到目标新增数据所在的数据行解锁的情况下,将所述目标新增数据的所述增量标识的字段长度,从第一数值纠正为第二数值;所述目标新增数据为,任意一条所述新增数据;
第二纠正单元,用于在检测到所述目标新增数据所在的数据行解锁的情况下,按照所述目标新增数据所在的数据行的解锁时间,在解锁排序中的序位,纠正所述目标新增数据的所述增量标识指示的所述序位,所述解锁排序为各条所述新增数据所在的数据行的解锁时间按照从早至晚的排序。
一种计算机可读存储介质,所述计算机可读存储介质包括存储的程序,其中,所述程序执行所述的增量标识修正方法。
一种增量标识修正设备,包括:处理器、存储器和总线;所述处理器与所述存储器通过所述总线连接;
所述存储器用于存储程序,所述处理器用于运行程序,其中,所述程序运行时执行所述的增量标识修正方法。
本申请提供的技术方案,在检测到数据库中新增数据的情况下,获取各条新增数据的增量标识。在检测到目标新增数据所在的数据行解锁的情况下,将目标新增数据的增量标识的字段长度,从第一数值纠正为第二数值。在检测到目标新增数据所在的数据行解锁的情况下,按照目标新增数据所在的数据行的解锁时间,在解锁排序中的序位,纠正目标新增数据的增量标识指示的序位。可见,当检测到目标新增数据所在的数据行解锁后,对目标新增数据的增量标识所指示的序位进行纠正,使得纠正后的序位是依据数据行解锁时间由早至晚的顺序进行排序的,数据行解锁时间越早,序位越靠前。如此一来,当外部应用采用增量获取方式获取各个新增数据时,由于增量标识所指示的顺序不再是各条新增数据写入数据库的顺序,而是各条新增数据所在数据行解锁时间由早至晚的顺序,因此,按照纠正后的标识,不会遗漏任意一条新增数据,有效解决在多事务并发执行的情况下,因倒序现象所导致的数据遗漏问题,并且,无需重复读取已经读取到的数据,提高了增量更新的效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种多事务并发执行示意图;
图2为本申请实施例提供的一种增量标识修正方法的示意图;
图3为本申请实施例提供的另一种增量标识修正方法的示意图;
图4为本申请实施例提供的另一种增量标识修正装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
申请人发现:
在多事务并发向关系型数据库中写入不同数据的情况下,基于增量获取方式获取数据库中新增的数据,可能会有遗漏个别事务所写入的数据的现象发生。具体的,如图1所示,A事务为长事务,B事务为短事务(即长事务的执行周期比短事务的执行周期长),并且,B事务是在A事务的执行周期内发起的。在实际应用中,只有在事务执行结束之后,才能允许外部应用从数据库中获取事务所写入的数据。为此,将A事务的执行周期划分为九个片段,针对每个片段所处时间戳内的事务执行情况进行分析研究,申请人进一步发现:
在第8片段所处时间戳内,A事务的执行过程还没结束,B事务的执行过程已结束。此时,B事务所写入的数据所在的数据行会解锁,A事务所写入的数据所在的数据行依旧上锁。为此,B事务所写入的数据可以被外部应用获取到,A事务所写入的数据依旧不会被外部应用所获取。此时,外部应用从数据库中获取增量数据时,只能获得到B事务所写入的数据,假设A事务所写入的数据的增量标识,在序位上是排在B事务所写入的数据的增量标识之前,则依据现有增量获取方式获取增量数据(即按照数据写入数据库从早至晚的顺序,获取各个新增数据,例如,增量标识依次为1-2-3-4-5-6,则从增量标识1开始获取,依次获取增量标识6所对应的新增数据),则A事务所写入的数据则会被遗漏(称之为倒序现象),例如,A事务所写入的3条数据的增量标识依次为1、2和3,B事务所写入的2条数据的增量标识依次为4和5,由于A事务还未执行结束、B事务已执行结束,因此外部应用只能获取到增量标识4和5所对应的数据,外部应用在获取到增量标识4和5所对应的数据后,后续只会接着获取增量标识6、以及6以后的序位所对应的数据,为此,增量标识1、2和3所对应的数据会被遗漏。
由此可见,由于增量数据获取方式是按照增量标识所指示的序位由前至后的顺序,依次读取数据库中的新增数据实现的,因此,若是一直按照原有增量标识所指示的序位,依次将数据库中的新增数据发布给外部应用,当外部应用在第8片段所处时间戳内读取所有新增数据时,无法避免地会遗漏部分新增数据。
除此之外,申请人还发现:
在第1片段所处时间戳内,A事务和B事务均未开始执行,因此,数据库中没有新增的数据,数据表中的数据行不会上锁,数据表中所有数据均可被外部应用访问,可见,第1片段所处时间戳内不存在新增数据被遗漏的现象。
在第2片段所处时间戳内,A事务开始执行,但并未写入数据(即向表中插入数据),B事务还未开始执行,因此,数据库中没有新增的数据,数据表中的数据行不会上锁,数据表中所有数据均可被外部应用访问,可见,第2片段所处时间戳内不存在新增数据被遗漏的现象。
在第3片段所处时间戳内,A事务开始写入数据,B事务并未开始执行,此时,A事务所操作的数据行会被上锁,A事务所写入的数据不会被外部应用所获取(通常称之为事务隔离级别,即read-committed),可见,第3片段所处时间戳内不存在新增数据被遗漏的现象。
在第4片段所处时间戳内,A事务开始写入数据,B事务开始执行但却没写入数据,此时,A事务所操作的数据行会被上锁,A事务所写入的数据不会被外部应用所获取,可见,第4片段所处时间戳内不存在新增数据被遗漏的现象。
在第5片段所处时间戳内,A事务和B事务均已开始写入数据,写入过程都还未结束,此时,A事务和B事务所操作的数据行会被上锁,A事务和B事务所写入的数据不会被外部应用所获取,可见,第5片段所处时间戳内不存在新增数据被遗漏的现象。
在第6片段所处时间戳内,A事务的写入过程已结束,A事务所写入的数据会被标记增量标识,B事务的写入过程还未结束,A事务和B事务都正处于执行过程中,此时,A事务和B事务所操作的数据行会被上锁,A事务和B事务所写入的数据不会被外部应用所获取,可见,第6片段所处时间戳内不存在新增数据被遗漏的现象。
在第7片段所处时间戳内,A事务和B事务的写入过程都已结束,A事务和B事务所写入的数据都已被标记增量标识,A事务和B事务都正处于执行过程中,此时,A事务和B事务所操作的数据行会被上锁,A事务和B事务所写入的数据不会被外部应用所获取,可见,第7片段所处时间戳内不存在新增数据被遗漏的现象。
在第9片段所处时间戳内,A事务和B事务的执行过程都已结束,A事务和B事务所写入的数据都已被标记增量标识,此时,A事务和B事务所写入的数据所在的数据行会解锁,A事务和B事务所写入的数据可以被外部应用所获取,可见,第9片段所处时间戳内不存在新增数据被遗漏的现象。
明显的,在多事务并发执行的情况下,只有在第8片段所处时间戳内才会出现倒序现象,然而,在实际应用中,无法限制外部应用不在第8片段所处时间戳内进行增量数据获取,因此,只能区分哪些新增数据是可被外部应用获取的,哪些新增数据是不可被外部应用获取的,并对可被外部应用获取的新增数据的增量标识所指示的序位进行纠正,令纠正后的序位按照数据行的解锁时间由早至晚的顺序进行排序(纠正前的序位是按照新增数据写入数据库的时间由早至晚的顺序进行排序的),使得所有新增数据都能够依次被外部应用所获取,避免因倒序现象导致数据遗漏,实现真正意义上的增量数据获取。
基于上述本申请人的发现,本申请实施例提供了如下技术方案:
如图2所示,为本申请实施例提供的一种增量标识修正方法的示意图,包括如下步骤:
S201:在检测到数据库中新增数据的情况下,获取各条新增数据的增量标识。
其中,各条新增数据的增量标识用于指示,各条新增数据写入数据库的顺序,新增数据写入数据库的时间越早,则增量标识所指示的序位越小。
需要说明的是,增量标识包括字段,字段长度为第一数值,第一数值的具体取值范围可由技术人员根据实际情况进行设置,在本实施例中,第一数值为不大于12的正整数。具体的,增量标识可以设置为1、或者100000、或者100000000000等,假设第一数值设为4,则写入关系型数据库中的第一条新增数据的增量标识为0001,第二条新增数据的增量标识为0002,第n条新增数据的增量标识为n,n为0002~9999范围内的任意一个数。
具体的,A事务和B事务并发执行,A事务向关系型数据库中写入3条数据,B事务向关系型数据库中写入2条数据,因此,检测到关系型数据库中新增数据的数量为5条。并且,为新增数据标注增量标识是关系型数据库自身所具备的功能特性,因此,这5条新增数据都会有对应的增量标识。此外,这5条新增数据的增量标识分别指示的序位为连续的。
需要说明的是,上述具体实现过程仅仅用于举例说明。
S202:利用更改跟踪进程,检测目标新增数据所在的数据行的变更详情。
其中,目标新增数据为,任意一条新增数据。变更详情用于指示数据行处于上锁状态、或者解锁状态。
需要说明的是,在本实施例中,不仅可以采用更改跟踪进程,检测新增数据所在的数据行的变更详情,还可以采用诸如变更数据捕获(Change Data Capture,CDC)进程、以及触发器进程等技术手段来实现。
S203:在检测到目标新增数据所在的数据行解锁的情况下,启用调度工具(sqlserver agent),以触发执行存储过程(Storedprocedure)中预存的时序更新进程,对目标新增数据的增量标识的字段长度进行纠正。
其中,纠正前的字段长度为第一数值,纠正后的字段长度为第二数值,在本实施例中,第一数值小于第二数值。
需要说明的是,受限于数据库自身的字段精度限制(字段长度不能大于16),因此,第二数值可以设为大于12、且小于16的正整数。此外,本实施例中所采用的时序更新进程,不仅可以采用现有的sqlserver sequence算法实现、也还可以采用其他手段来实现,这里便不再赘述。
在本实施例中,存储过程的调度过程独立于写入进程之外,写入进程用于将新增数据写入数据库。并且,执行时序更新进程的操作为单线程操作。
需要说明的是,在实际应用中,将时序更新进程的操作设置为单线程操作,能够避免多线程同步执行时可能引发的错误(例如重复多次对目标新增数据的增量标识的字段长度进行纠正)。
S204:启用调度工具,以触发执行存储过程中预存的时序更新进程,按照目标新增数据所在的数据行的解锁时间,在解锁排序中的序位,纠正目标新增数据的增量标识指示的序位。
其中,解锁排序为各条新增数据所在的数据行的解锁时间按照从早至晚的排序。
具体的,假设A事务和B事务并行执行,第一数值设为1,第二数值设为13,A事务率先向关系型数据库写入3条数据,这3条新增数据的增量标识依次为1、2、3,而后B事务写入2条数据,这2条新增数据的增量标识依次为4、5。由于B事务比A事务提前结束执行,因此,B事务所写入的数据所在数据行的解锁时间,早于A事务所写入的数据所在数据行的解锁时间。为此,B事务所产生的2条新增数据的增量标识的纠正结果为1000000000001和1000000000002,A事务所产生的3条新增数据的增量标识的纠正结果为1000000000003、1000000000004和1000000000005。
从上述序位的变更,可以理解的是,S203中对于标识长度的变更的目的在于,区分序位变更后的标识和原始序位的标识。
需要说明的是,上述具体实现过程仅仅用于举例说明。
另外,S203和S204的执行顺序包括但不限于本实施例所展示的执行顺序。
综上所述,在检测到数据库中新增数据的情况下,获取各条新增数据的增量标识。在检测到目标新增数据所在的数据行解锁的情况下,将目标新增数据的增量标识的字段长度,从第一数值纠正为第二数值。在检测到目标新增数据所在的数据行解锁的情况下,按照目标新增数据所在的数据行的解锁时间,在解锁排序中的序位,纠正目标新增数据的增量标识指示的序位。可见,当检测到目标新增数据所在的数据行解锁后,对目标新增数据的增量标识所指示的序位进行纠正,使得纠正后的序位是依据数据行解锁时间由早至晚的顺序进行排序的,数据行解锁时间越早,序位越靠前。如此一来,当外部应用采用增量获取方式获取各条新增数据时,由于增量标识所指示的顺序不再是各条新增数据写入数据库的顺序,而是各条新增数据所在数据行解锁时间由早至晚的顺序,因此,不会遗漏任意一条新增数据,有效解决在多事务并发执行的情况下,因倒序现象所导致的数据遗漏问题,也就是说,数据读取方仅依据标识即可明确是否遗漏数据,在遗漏数据的情况下,依据标识读取遗漏的数据即可,并且,无需重复读取已经读取到的数据,提高了增量更新的效率。
需要说明的是,上述实施例中,S202提及的利用更改跟踪进程检测新增数据的所在的数据行的变更详情这一过程,为本申请所述的增量标识修正方法的一种可选的实现方式,当然,可以利用其它手段来实现数据行变更详情的检测。此外,S203提及的启用调度工具以触发执行存储过程中预存的时序更新进程,也为本申请所述的增量标识修正方法的一种可选的实现方式,还可以利用其它手段实现对增量标识所指示的序位、以及字段长度进行纠正。
因此,上述实施例提及的流程可以概括为图3所示的方法。
如图3所示,为本申请实施例提供的另一种增量标识修正方法的示意图,包括如下步骤:
S301:在检测到数据库中新增数据的情况下,获取各条新增数据的增量标识。
其中,各条新增数据的增量标识用于指示,各条新增数据写入数据库的顺序,新增数据写入数据库的时间越早,则增量标识所指示的序位越小。
S302:在检测到目标新增数据所在的数据行解锁的情况下,将目标新增数据的增量标识的字段长度,从第一数值纠正为第二数值。
其中,目标新增数据为,任意一条新增数据。
S303:在检测到目标新增数据所在的数据行解锁的情况下,按照目标新增数据所在的数据行的解锁时间,在解锁排序中的序位,纠正目标新增数据的增量标识指示的序位。
其中,解锁排序为各条新增数据所在的数据行的解锁时间按照从早至晚的排序。
综上所述,在检测到数据库中新增数据的情况下,获取各条新增数据的增量标识。在检测到目标新增数据所在的数据行解锁的情况下,将目标新增数据的增量标识的字段长度,从第一数值纠正为第二数值。在检测到目标新增数据所在的数据行解锁的情况下,按照目标新增数据所在的数据行的解锁时间,在解锁排序中的序位,纠正目标新增数据的增量标识指示的序位。可见,当检测到目标新增数据所在的数据行解锁后,对目标新增数据的增量标识所指示的序位进行纠正,使得纠正后的序位是依据数据行解锁时间由早至晚的顺序进行排序的,数据行解锁时间越早,序位越靠前。如此一来,当外部应用采用增量获取方式获取各条新增数据时,由于增量标识所指示的顺序不再是各条新增数据写入数据库的顺序,而是各条新增数据所在数据行解锁时间由早至晚的顺序,因此,不会遗漏任意一条新增数据,有效解决在多事务并发执行的情况下,因倒序现象所导致的数据遗漏问题,并且,无需重复读取已经读取到的数据,提高了增量更新的效率。
需要说明的是,S302和S303中的顺序不做限定,并且“在检测到目标新增数据所在的数据行解锁的情况下”仅为对于后续步骤执行条件的限定,在已经判断出结果的情况下,无需重复判断。
也就是说,S302强调的是增量标识的长度的纠正,S303强调的是增量标识的内容的纠正,执行条件相同,但执行顺序不做限定,可以串行执行(如图2中示例),也可以并行执行。
与上述本申请实施例提供的增量标识修正方法相对应,本申请还提供了一种增量标识修正装置。
如图4所示,为本申请实施例提供的一种增量标识修正装置的结构示意图,包括:
获取单元100,用于在检测到数据库中新增数据的情况下,获取各条新增数据的增量标识,其中,各条新增数据的增量标识用于指示,各条新增数据写入数据库的顺序,新增数据写入数据库的时间越早,则增量标识所指示的序位越小。
第一纠正单元200,用于在检测到目标新增数据所在的数据行解锁的情况下,将目标新增数据的增量标识的字段长度,从第一数值纠正为第二数值,目标新增数据为,任意一条新增数据。
其中,第一纠正单元200具体用于:检测目标新增数据所在的数据行的变更详情,变更详情用于指示数据行处于上锁状态、或者解锁状态,在检测到数据行处于解锁状态的情况下,对目标新增数据的增量标识的字段长度进行纠正,纠正前的字段长度为第一数值,纠正后的字段长度为第二数值,第一数值为不大于12的正整数,第二数值为大于12、且小于16的正整数。
第一纠正单元200检测目标新增数据所在的数据行的变更详情的具体实现过程包括:利用更改跟踪进程、变更数据捕获进程、或者触发器进程,检测目标新增数据所在的数据行的变更详情。
第一纠正单元200对目标新增数据的增量标识的字段长度进行纠正的具体实现过程包括:启用预设的调度工具,以触发执行预设的存储过程中预存的时序更新进程,对目标新增数据的增量标识的字段长度进行纠正,其中,存储过程的调度过程独立于写入进程之外,写入进程用于将目标新增数据写入数据库,执行时序更新进程的操作为单线程操作。
第二纠正单元300,用于在检测到目标新增数据所在的数据行解锁的情况下,按照目标新增数据所在的数据行的解锁时间,在解锁排序中的序位,纠正目标新增数据的增量标识指示的序位,解锁排序为各条新增数据所在的数据行的解锁时间按照从早至晚的排序。
综上所述,在检测到数据库中新增数据的情况下,获取各条新增数据的增量标识。在检测到目标新增数据所在的数据行解锁的情况下,将目标新增数据的增量标识的字段长度,从第一数值纠正为第二数值。在检测到目标新增数据所在的数据行解锁的情况下,按照目标新增数据所在的数据行的解锁时间,在解锁排序中的序位,纠正目标新增数据的增量标识指示的序位。可见,当检测到目标新增数据所在的数据行解锁后,对目标新增数据的增量标识所指示的序位进行纠正,使得纠正后的序位是依据数据行解锁时间由早至晚的顺序进行排序的,数据行解锁时间越早,序位越靠前。如此一来,当外部应用采用增量获取方式获取各个新增数据时,由于增量标识所指示的顺序不再是各条新增数据写入数据库的顺序,而是各条新增数据所在数据行解锁时间由早至晚的顺序,因此,不会遗漏任意一条新增数据,有效解决在多事务并发执行的情况下,因倒序现象所导致的数据遗漏问题,并且,无需重复读取已经读取到的数据,提高了增量更新的效率。
本申请还提供了一种计算机可读存储介质,计算机可读存储介质包括存储的程序,其中,程序执行上述本申请提供的增量标识修正方法。
本申请还提供了一种增量标识修正设备,包括:处理器、存储器和总线。处理器与存储器通过总线连接,存储器用于存储程序,处理器用于运行程序,其中,程序运行时执行上述本申请提供的增量标识修正方法,包括如下步骤:
在检测到数据库中新增数据的情况下,获取各条所述新增数据的增量标识;其中,各条所述新增数据的所述增量标识用于指示,各条所述新增数据写入所述数据库的顺序,所述新增数据写入所述数据库的时间越早,则所述增量标识所指示的序位越小;
在检测到目标新增数据所在的数据行解锁的情况下,将所述目标新增数据的所述增量标识的字段长度,从第一数值纠正为第二数值;所述目标新增数据为,任意一条所述新增数据;
在检测到所述目标新增数据所在的数据行解锁的情况下,按照所述目标新增数据所在的数据行的解锁时间,在解锁排序中的序位,纠正所述目标新增数据的所述增量标识指示的所述序位,所述解锁排序为各条所述新增数据所在的数据行的解锁时间按照从早至晚的排序。
可选的,所述在检测到目标新增数据所在的数据行解锁的情况下,将所述目标新增数据的所述增量标识的字段长度,从第一数值纠正为第二数值,包括:
检测所述目标新增数据所在的数据行的变更详情,所述变更详情用于指示所述数据行处于上锁状态、或者解锁状态;
在检测到所述数据行处于解锁状态的情况下,对所述目标新增数据的所述增量标识的字段长度进行纠正,纠正前的所述字段长度为第一数值,纠正后的所述字段长度为第二数值。
可选的,所述检测所述目标新增数据所在的数据行的变更详情,包括:
利用更改跟踪进程、变更数据捕获进程、或者触发器进程,检测所述目标新增数据所在的数据行的变更详情。
可选的,所述对所述目标新增数据的所述增量标识的字段长度进行纠正,包括:
启用预设的调度工具,以触发执行预设的存储过程中预存的时序更新进程,对所述目标新增数据的所述增量标识的字段长度进行纠正;其中,所述存储过程的调度过程独立于写入进程之外,所述写入进程用于将所述目标新增数据写入所述数据库。
可选的,执行所述时序更新进程的操作为单线程操作。
可选的,所述第一数值小于所述第二数值。
可选的,所述第一数值为不大于12的正整数,所述第二数值为大于12、且小于16的正整数。
本申请实施例方法所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本申请实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种增量标识修正方法,其特征在于,包括:
在检测到数据库中新增数据的情况下,获取各条所述新增数据的增量标识;其中,各条所述新增数据的所述增量标识用于指示,各条所述新增数据写入所述数据库的顺序,所述新增数据写入所述数据库的时间越早,则所述增量标识所指示的序位越小;
在检测到目标新增数据所在的数据行解锁的情况下,将所述目标新增数据的所述增量标识的字段长度,从第一数值纠正为第二数值;所述目标新增数据为,任意一条所述新增数据;
在检测到所述目标新增数据所在的数据行解锁的情况下,按照所述目标新增数据所在的数据行的解锁时间,在解锁排序中的序位,纠正所述目标新增数据的所述增量标识指示的所述序位,所述解锁排序为各条所述新增数据所在的数据行的解锁时间按照从早至晚的排序。
2.根据权利要求1所述的方法,其特征在于,所述在检测到目标新增数据所在的数据行解锁的情况下,将所述目标新增数据的所述增量标识的字段长度,从第一数值纠正为第二数值,包括:
检测所述目标新增数据所在的数据行的变更详情,所述变更详情用于指示所述数据行处于上锁状态、或者解锁状态;
在检测到所述数据行处于解锁状态的情况下,对所述目标新增数据的所述增量标识的字段长度进行纠正,纠正前的所述字段长度为第一数值,纠正后的所述字段长度为第二数值。
3.根据权利要求2所述的方法,其特征在于,所述检测所述目标新增数据所在的数据行的变更详情,包括:
利用更改跟踪进程、变更数据捕获进程、或者触发器进程,检测所述目标新增数据所在的数据行的变更详情。
4.根据权利要求2所述的方法,其特征在于,所述对所述目标新增数据的所述增量标识的字段长度进行纠正,包括:
启用预设的调度工具,以触发执行预设的存储过程中预存的时序更新进程,对所述目标新增数据的所述增量标识的字段长度进行纠正;其中,所述存储过程的调度过程独立于写入进程之外,所述写入进程用于将所述目标新增数据写入所述数据库。
5.根据权利要求4所述的方法,其特征在于,执行所述时序更新进程的操作为单线程操作。
6.根据权利要求1所述的方法,其特征在于,所述第一数值小于所述第二数值。
7.根据权利要求1或6所述的方法,其特征在于,所述第一数值为不大于12的正整数,所述第二数值为大于12、且小于16的正整数。
8.一种增量标识修正装置,其特征在于,包括:
获取单元,用于在检测到数据库中新增数据的情况下,获取各条所述新增数据的增量标识;其中,各条所述新增数据的所述增量标识用于指示,各条所述新增数据写入所述数据库的顺序,所述新增数据写入所述数据库的时间越早,则所述增量标识所指示的序位越小;
第一纠正单元,用于在检测到目标新增数据所在的数据行解锁的情况下,将所述目标新增数据的所述增量标识的字段长度,从第一数值纠正为第二数值;所述目标新增数据为,任意一条所述新增数据;
第二纠正单元,用于在检测到所述目标新增数据所在的数据行解锁的情况下,按照所述目标新增数据所在的数据行的解锁时间,在解锁排序中的序位,纠正所述目标新增数据的所述增量标识指示的所述序位,所述解锁排序为各条所述新增数据所在的数据行的解锁时间按照从早至晚的排序。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的程序,其中,所述程序执行权利要求1-7所述的增量标识修正方法。
10.一种增量标识修正设备,其特征在于,包括:处理器、存储器和总线;所述处理器与所述存储器通过所述总线连接;
所述存储器用于存储程序,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1-7所述的增量标识修正方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011146252.7A CN112256702B (zh) | 2020-10-23 | 2020-10-23 | 一种增量标识修正方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011146252.7A CN112256702B (zh) | 2020-10-23 | 2020-10-23 | 一种增量标识修正方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112256702A true CN112256702A (zh) | 2021-01-22 |
CN112256702B CN112256702B (zh) | 2023-12-22 |
Family
ID=74264266
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011146252.7A Active CN112256702B (zh) | 2020-10-23 | 2020-10-23 | 一种增量标识修正方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112256702B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060155752A1 (en) * | 2005-01-13 | 2006-07-13 | International Business Machines Corporation | System and method for incremental indexing |
CN103631967A (zh) * | 2013-12-18 | 2014-03-12 | 北京华环电子股份有限公司 | 一种带自增量标识字段的数据表的处理方法及装置 |
CN104573100A (zh) * | 2015-01-29 | 2015-04-29 | 无锡江南计算技术研究所 | 一种带自增量标识的分步式数据库同步方法 |
CN104598610A (zh) * | 2015-01-29 | 2015-05-06 | 无锡江南计算技术研究所 | 一种分步式数据库数据分发上传同步方法 |
CN111104445A (zh) * | 2019-12-06 | 2020-05-05 | 杭州数梦工场科技有限公司 | 数据同步方法、装置及设备 |
-
2020
- 2020-10-23 CN CN202011146252.7A patent/CN112256702B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060155752A1 (en) * | 2005-01-13 | 2006-07-13 | International Business Machines Corporation | System and method for incremental indexing |
CN103631967A (zh) * | 2013-12-18 | 2014-03-12 | 北京华环电子股份有限公司 | 一种带自增量标识字段的数据表的处理方法及装置 |
CN104573100A (zh) * | 2015-01-29 | 2015-04-29 | 无锡江南计算技术研究所 | 一种带自增量标识的分步式数据库同步方法 |
CN104598610A (zh) * | 2015-01-29 | 2015-05-06 | 无锡江南计算技术研究所 | 一种分步式数据库数据分发上传同步方法 |
CN111104445A (zh) * | 2019-12-06 | 2020-05-05 | 杭州数梦工场科技有限公司 | 数据同步方法、装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112256702B (zh) | 2023-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104702784A (zh) | 一种移动终端多sim卡热插拔的检测方法及系统 | |
CN107515874A (zh) | 一种分布式非关系型数据库中同步增量数据的方法与设备 | |
CN112286939A (zh) | 块链式账本中全局状态的哈希的生成方法、装置及设备 | |
CN109634846B (zh) | 一种etl软件测试方法和装置 | |
CN110555770A (zh) | 一种基于增量哈希的区块链世界状态校验和恢复方法 | |
CN111414362A (zh) | 数据读取方法、装置、设备及存储介质 | |
CN110909004A (zh) | 一种分库分表的数据校验方法及设备 | |
CN108121774B (zh) | 一种数据表备份方法及终端设备 | |
CN110309122B (zh) | 获取增量数据的方法、装置、服务器和存储介质 | |
CN113076310A (zh) | 实时数据仓库的数据校验方法、系统及计算机可读介质 | |
CN108009223B (zh) | 一种交易数据的一致性检测方法及装置 | |
CN109344164B (zh) | 数据存储方法及装置 | |
CN112256702B (zh) | 一种增量标识修正方法及装置 | |
CN113486109A (zh) | 异构数据库的数据同步方法、装置及电子设备 | |
CN112181479A (zh) | 代码文件版本间差异的确定方法、装置及电子设备 | |
CN107329807B (zh) | 数据延迟处理方法和装置、计算机可读存储介质 | |
CN102591941B (zh) | 一种SQLite空闲链表节点的解析方法和装置 | |
CN107315806B (zh) | 一种基于文件系统的嵌入式存储方法和装置 | |
CN111984662B (zh) | 批量更新数据库的方法及装置 | |
CN113495901A (zh) | 一种面向可变长数据块的快速检索方法 | |
CN114297217A (zh) | 事务并发控制方法、装置、电子设备及可读存储介质 | |
CN111158994A (zh) | 一种压测性能测试方法及装置 | |
CN111259003A (zh) | 一种数据库建立方法及装置 | |
CN114443672A (zh) | 一种多版本并发控制方法、装置、设备及存储介质 | |
CN109325031B (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 |