CN109656932B - 一种数据同步时利用更新游标的数据初始化方法 - Google Patents

一种数据同步时利用更新游标的数据初始化方法 Download PDF

Info

Publication number
CN109656932B
CN109656932B CN201811338923.2A CN201811338923A CN109656932B CN 109656932 B CN109656932 B CN 109656932B CN 201811338923 A CN201811338923 A CN 201811338923A CN 109656932 B CN109656932 B CN 109656932B
Authority
CN
China
Prior art keywords
cursor
loading
loading table
information
updating
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
CN201811338923.2A
Other languages
English (en)
Other versions
CN109656932A (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 CN201811338923.2A priority Critical patent/CN109656932B/zh
Publication of CN109656932A publication Critical patent/CN109656932A/zh
Application granted granted Critical
Publication of CN109656932B publication Critical patent/CN109656932B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开一种数据同步时利用更新游标的数据初始化方法,包括以下步骤:步骤S1、在待初始化的装载表上定义更新游标,在源端数据库创建辅助表以及与所述装载表的表结构相同的映射表;步骤S2、拨动所述更新游标遍历所述装载表,并依次将所述更新游标所在行插入所述映射表,每完成设定值的插入操作后在所述辅助表中插入装载表的信息并回滚整个事务,直至遍历完成;步骤S3、数据库日志同步解析模块通过分析上述过程的操作日志,完成所述装载表的初始化。本发明在初始化过程中不需要对表上S锁,不会读取到源端数据库正在修改且没有提交的行,不会影响到源端数据库的正常工作。

Description

一种数据同步时利用更新游标的数据初始化方法
技术领域
本发明涉及数据同步时数据初始化技术领域,具体涉及一种数据同步时利用更新游标的数据初始化方法。
背景技术
在搭建两个数据库之间的同步时,需要初始化目标端数据库的数据。现有技术中,对加锁机制的数据库进行初始化时,通常需要对数据库对表上S锁,因此,数据库在进行初始化的过程中,上了S锁的表会阻塞外部写访问,导致初始化时数据库上有些表无法访问的问题,影响数据库的正常使用。如果不对表上S锁,那么初始化过程中,还容易出现读取到数据库中正在被修改且没有提交的行,影响初始化数据的一致性。
发明内容
本发明的目的在于克服上述技术不足,提供一种数据同步时利用更新游标的数据初始化方法,解决现有技术中数据库初始化需要对表上S锁,容易出现读取到数据库中正在被修改且没有提交的行,影响数据库的正常工作的技术问题。
为达到上述技术目的,本发明的技术方案提供一种数据同步时利用更新游标的数据初始化方法,包括以下步骤:
步骤S1、在待初始化的装载表上定义更新游标,在源端数据库创建辅助表以及与所述装载表的表结构相同的映射表;
步骤S2、拨动所述更新游标遍历所述装载表,并依次将所述更新游标所在行插入所述映射表,每完成设定值的插入操作后在所述辅助表中插入装载表的信息并回滚整个事务,直至遍历完成;
步骤S3、数据库日志同步解析模块通过分析上述过程的操作日志,完成所述装载表的初始化。
与现有技术相比,本发明的有益效果包括:本发明在初始化过程中,设置了设定值,每完成设定值的插入行数就在辅助表中插入装载表的信息然后回滚操作,在辅助表中插入装载表信息是为了让数据库日志同步解析程序能识别出该事务是初始化操作产生的,而不是第三方应用的事务;而回滚操作则是为了减轻数据库日志系统的刷盘压力,因为回滚操作并不要求数据库立即刷盘。将装载表向映射表的映射插入操作分成多段进行,使得进行数据初始化时,不再需要对装载表上S锁,只需对装载表当前游标遍历的行上行锁即可。由于初始化过程中只需要对装载表上行锁,因此很大程度上降低了初始化过程对源端数据库的影响,在初始化过程中,用户仍然可以正常访问源端数据库,读取和修改装载表上的数据。最后再通过数据库日志同步解析模块分析数据库的日志完成装载表的初始化即可。同时,本发明通过更新游标的拨动遍历装载表,当访问到修改且未提交的行时游标拨动就会被阻塞,避免了初始化时读取到正在修改且没有提交的行,避免初始化过程中源端数据库的修改操作对数据初始化的一致性造成影响。
附图说明
图1是本发明提供的数据同步时利用更新游标的数据初始化方法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
实施例1:
如图1所示,本发明的实施例1提供了一种数据同步时利用更新游标的数据初始化方法,包括以下步骤:
步骤S1、在待初始化的装载表上定义更新游标,在源端数据库创建辅助表以及与所述装载表的表结构相同的映射表;
步骤S2、拨动所述更新游标遍历所述装载表,并依次将所述更新游标所在行插入所述映射表,每完成设定值的插入操作后在所述辅助表中插入装载表的信息并回滚整个事务,直至遍历完成;
步骤S3、数据库日志同步解析模块通过分析上述过程的操作日志,完成所述装载表的初始化。
本发明首先在源端数据库创建与待初始化的装载表表结构相同的映射表,通过拨动更新游标依次将装载表上数据使用更新游标所在位置插入到映射表,插入操作会记录在操作日志中,便于后续通过日志分析解析出插入操作完成初始化。而且大对象数据的插入操作可以记录在操作日志中,因此本发明可以实现大对象数据的初始化。在装载表向映射表映射数据的过程中,设置设定值,完成设定值次的映射插入操作即进行一次回滚操作,以便释放行锁,直至装载表遍历完成,完成所有映射插入操作。由于不需要对表上S锁,因此初始化过程不会影响源端数据库中装载表的访问,初始化过程中,用户仍然可以访问和修改装载表。本发明在将装载表上的数据依次插入映射表的过程中,是通过拨动更新游标实现装载表的遍历的,由于更新游标在拨动过程中会对行上X锁,如果行正在被修改并且没有提交,游标拨动则会被阻塞,因此可以避免在遍历的过程中读取到源端数据库中正在修改且还没有提交的行,避免装载表初始数据源端和目标端产生不一致。
本发明提供的数据同步时利用更新游标的数据初始化方法,在初始化过程中不需要对表上S锁,不会影响到源端数据库的正常工作,用户可以正常访问源端数据库。而且,初始化过程中不会读取到源端数据库正在修改且没有提交的行,避免了初始化过程中源端数据库的修改操作对数据初始化的一致性造成影响。
优选的,所述步骤S1还包括,在创建所述辅助表时,将日志分析的起始LSN设置为当前LSN。
在创建辅助表时,记录当前LSN作为日志分析的起始LSN,便于准确找到日志分析的起始分析点,提高日志分析效率。
优选的,所述步骤S2具体为:
步骤S21、在所述辅助表中插入装载开始信息;
步骤S22、拨动所述更新游标,将所述更新游标所在行插入所述映射表;
步骤S23、判断所述更新游标是否到达结果集末尾,如果是则在所述辅助表中插入装载结束信息后回滚操作;否则转步骤S24;
步骤S24、判断所述更新游标的拨动次数是否大于设定值,如果是则在所述辅助表中插入所述装载表的信息并回滚整个事务,将所述拨动次数清零然后转步骤S22;否则直接转步骤S22。
在遍历装载表前,在辅助表中插入装载开始信息,遍历完成后,在辅助表中插入装载结束信息,根据装载开始信息、装载结束信息可以准确定位到初始化的起始点和结束点,便于后续日志分析以及初始化过程的准确定位。具体的,所述装载开始信息包括装载表的模式名、表名以及表ID。所述装载结束信息包括装载表的模式名、表名以及表ID。所述装载表的信息同样包括装载表的模式名、表名以及表ID。日志分析时,可以解析出装载表的模式名、表名以及表ID,通过这些信息可标识区别不同装载表的操作日志,并把这些日志所涉及的事务和其它应用事务区分开来。
优选的,所述步骤S2中将所述更新游标所在行插入所述映射表,具体为:
获取所述更新游标所在ROWID,根据所述ROWID作为定位条件,使用查询插入的方法将所述更新游标对应行插入所述映射表。
ROWID具有唯一性,因此,根据ROWID定位装载表当前更新游标所在行,并将更新游标所在行的数据插入对应映射表,完成装载表向映射表的模拟初始化过程。把基表的行通过ROWID定义的方式查询插入对应的映射表,虽增加了数据库的日志量,但是该方式可以使大对像列生成数据日志,从而实现带大对像类型表的数据初始化。
优选的,所述步骤S3具体为:
数据库日志同步解析模块通过分析所述操作日志获取所述装载表的信息以及所述映射表的插入操作,结合所述装载表的信息,将所述映射表的插入操作转换为装载表的插入操作,然后投递至目标端数据库执行,完成所述装载表的初始化。
本发明在装载表向映射表映射插入数据的同时,通过辅助表记录装载表的信息。由于通过日志分析解析出的插入操作的对象是映射表,因此还需要结合辅助表中记录的装载表的信息,将解析出的插入操作转换成装载表的插入操作,最后将装载表的插入操作投递至目标端数据库进行执行,即可完成装载表的初始化过程。不包含映射表的事务需要直接丢弃,因为它是属于第三方应用产生的日志。
实施例2:
本发明的实施例2提供了一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现以上任一实施例所述数据同步时利用更新游标的数据初始化方法。
本发明提供的计算机存储介质,基于上述数据同步时利用更新游标的数据初始化方法,因此,上述数据同步时利用更新游标的数据初始化方法具备的技术效果,计算机存储介质同样具备,在此不再赘述。
以上所述本发明的具体实施方式,并不构成对本发明保护范围的限定。任何根据本发明的技术构思所做出的各种其他相应的改变与变形,均应包含在本发明权利要求的保护范围内。

Claims (4)

1.一种数据同步时利用更新游标的数据初始化方法,其特征在于,包括以下步骤:
步骤S1、在待初始化的装载表上定义更新游标,在源端数据库创建辅助表以及与所述装载表的表结构相同的映射表,其中,所述装载表包括装载开始信息和装载结束信息;
步骤S2、拨动所述更新游标遍历所述装载表,并依次将所述更新游标所在行插入所述映射表,每完成设定值的插入操作后在所述辅助表中插入装载表的信息并回滚整个事务,直至遍历完成;
步骤S3、数据库日志同步解析模块通过分析上述过程的操作日志,完成所述装载表的初始化;
所述步骤S2具体为:
步骤S21、在所述辅助表中插入装载开始信息;
步骤S22、拨动所述更新游标,将所述更新游标所在行插入所述映射表;
步骤S23、判断所述更新游标是否到达结果集末尾,如果是则在所述辅助表中插入装载结束信息后回滚操作;否则转步骤S24;
步骤S24、判断所述更新游标的拨动次数是否大于设定值,如果是则在所述辅助表中插入所述装载表的信息并回滚整个事务,将所述拨动次数清零然后转步骤S22;否则直接转步骤S22;
所述步骤S3具体为:
数据库日志同步解析模块通过分析所述操作日志获取所述装载表的信息以及所述映射表的插入操作,结合所述装载表的信息,将所述映射表的插入操作转换为装载表的插入操作,然后投递至目标端数据库执行,完成所述装载表的初始化。
2.根据权利要求1所述的数据同步时利用更新游标的数据初始化方法,其特征在于,所述步骤S1还包括,在创建所述辅助表时,将日志分析的起始LSN设置为当前LSN。
3.根据权利要求1所述的数据同步时利用更新游标的数据初始化方法,其特征在于,所述步骤S2中将所述更新游标所在行插入所述映射表,具体为:
获取所述更新游标所在ROWID,根据所述ROWID作为定位条件,使用查询插入的方法将所述更新游标对应行插入所述映射表。
4.一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1-3任一所述数据同步时利用更新游标的数据初始化方法。
CN201811338923.2A 2018-11-12 2018-11-12 一种数据同步时利用更新游标的数据初始化方法 Active CN109656932B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811338923.2A CN109656932B (zh) 2018-11-12 2018-11-12 一种数据同步时利用更新游标的数据初始化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811338923.2A CN109656932B (zh) 2018-11-12 2018-11-12 一种数据同步时利用更新游标的数据初始化方法

Publications (2)

Publication Number Publication Date
CN109656932A CN109656932A (zh) 2019-04-19
CN109656932B true CN109656932B (zh) 2022-03-25

Family

ID=66110827

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811338923.2A Active CN109656932B (zh) 2018-11-12 2018-11-12 一种数据同步时利用更新游标的数据初始化方法

Country Status (1)

Country Link
CN (1) CN109656932B (zh)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7958160B2 (en) * 2003-12-16 2011-06-07 Oracle International Corporation Executing filter subqueries using a parallel single cursor model
CN102542054B (zh) * 2011-12-29 2017-02-08 厦门雅迅网络股份有限公司 一种利用缓存表来提高数据库数据插入性能的方法
US9542468B2 (en) * 2014-03-24 2017-01-10 Hitachi, Ltd. Database management system and method for controlling synchronization between databases
CN104820701B (zh) * 2015-05-11 2018-02-06 北京瑞星信息技术股份有限公司 数据记录和同步方法及系统
CN104965879B (zh) * 2015-06-12 2019-03-26 小米科技有限责任公司 修改数据表的表结构的方法及装置
CN108388613B (zh) * 2018-02-08 2020-09-11 竞技世界(北京)网络技术有限公司 一种缓存数据的更新方法

Also Published As

Publication number Publication date
CN109656932A (zh) 2019-04-19

Similar Documents

Publication Publication Date Title
EP3117348B1 (en) Systems and methods to optimize multi-version support in indexes
US9953051B2 (en) Multi-version concurrency control method in database and database system
US9348883B2 (en) Systems and methods for replication replay in a relational database
US11210283B2 (en) Reducing update conflicts when maintaining views
US9418094B2 (en) Method and apparatus for performing multi-stage table updates
US9053153B2 (en) Inter-query parallelization of constraint checking
CA2167790A1 (en) Relational database system and method with high data availability during table data restructuring
US20110145201A1 (en) Database mirroring
CN107665255B (zh) 键值数据库数据变更的方法、装置、设备及存储介质
CN104317944B (zh) 一种基于公式的时间戳动态调整并发控制方法
US20180300147A1 (en) Database Operating Method and Apparatus
US7149742B1 (en) System and method for remote data access
CN109614444B (zh) 一种数据同步时的数据初始化方法
CN109656932B (zh) 一种数据同步时利用更新游标的数据初始化方法
CN115858252B (zh) 一种数据恢复方法、装置及存储介质
US20180150498A1 (en) Database management device, information processing system, and database management method
KR101024494B1 (ko) 메타데이타를 이용한 변경 데이타 추출방법
CN114816247A (zh) 一种逻辑数据获取方法及装置
CN112783927B (zh) 一种数据库查询方法及系统
CN117390036A (zh) 跨数据库的物化视图的增量刷新方法和装置
CN114595224A (zh) 数据存储方法及装置、数据查询方法及装置
CN116383209A (zh) 一种面向列存数据库的并发控制方法及其装置
CN117827972A (zh) 数据同步方法、装置、设备和介质
KR100205950B1 (ko) 다사용자용 저장시스템에서 테이블 래치와 항목 래치를 이용한 테이블 형태 데이타에 대한 동시성 제어 방법
CN113778632A (zh) 一种基于cassandra数据库的分布式事务管理方法

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
CB03 Change of inventor or designer information

Inventor after: Sun Feng

Inventor after: Fu Quan

Inventor before: Sun Feng

Inventor before: Fu Quan

Inventor before: Yang Chun

CB03 Change of inventor or designer 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.

CB02 Change of applicant information
CB03 Change of inventor or designer information

Inventor after: Sun Feng

Inventor before: Sun Feng

Inventor before: Fu Quan

CB03 Change of inventor or designer information
GR01 Patent grant
GR01 Patent grant