【技术实现步骤摘要】
一种基于并行执行的数据同步的方法和装置
本专利技术涉及数据库领域,特别是涉及一种基于并行执行的数据同步的方法和装置。
技术介绍
传统的基于数据库自身的主备机制实现数据库数据的实时复制,是进行数据容灾备份,保障数据安全的重要的解决方案。但是,数据库主备机制要求备机数据库系统和主机一致,对于异构数据库系统环境,则不能利用数据库自身的主备机制实现有效的数据实时复制。为了实现异构数据库的数据实时复制,目前通常使用基于软件的异构数据库同步方法,该方法在源端捕获源数据库的增量数据,然后发送到目标端,在目标端通过通用的数据库访问接口将增量数据应用到目标数据库,实现数据复制。在数据库同步的实时同步过程中,需要按照数据库日志文件中所记录的各个事务的操作顺序进行同步,否则会破坏源数据库和目标数据库之间的数据一致性。如果目标端的数据同步软件严格按照源端数据库日志文件中的事务顺序进行同步,虽然能够有效保证数据复制的一致性,但是会严重影响数据同步的并行度,同步效率将会非常低下。鉴于此,如何克服该现有技术所存在的缺陷,解决异构数 ...
【技术保护点】
1.一种基于并行执行的数据同步的方法,其特征在于,所述方法包括:/n获取需同步的事务;/n创建至少两个执行线程,每个执行线程中包括一个唤醒队列;/n按照提交顺序将事务逐一分配至不同的空闲的执行线程,被分配至每个线程中的事务为每个执行线程的当前事务;/n获取每个执行线程的当前事务中的每个操作,根据每个操作的唯一标识符对所述每个操作构造行锁;/n判断每个执行线程中的当前事务是否与提交顺序在其之前的事务存在行锁冲突,若存在行锁冲突,则将当前事务放入与其存在行锁冲突的事务所在的执行线程的唤醒队列中进行等待;/n执行线程并行执行不存在行锁冲突的当前事务;/n每个执行线程执行完当前事务 ...
【技术特征摘要】
1.一种基于并行执行的数据同步的方法,其特征在于,所述方法包括:
获取需同步的事务;
创建至少两个执行线程,每个执行线程中包括一个唤醒队列;
按照提交顺序将事务逐一分配至不同的空闲的执行线程,被分配至每个线程中的事务为每个执行线程的当前事务;
获取每个执行线程的当前事务中的每个操作,根据每个操作的唯一标识符对所述每个操作构造行锁;
判断每个执行线程中的当前事务是否与提交顺序在其之前的事务存在行锁冲突,若存在行锁冲突,则将当前事务放入与其存在行锁冲突的事务所在的执行线程的唤醒队列中进行等待;
执行线程并行执行不存在行锁冲突的当前事务;
每个执行线程执行完当前事务后,唤醒执行线程的唤醒队列中的事务开始执行。
2.根据权利要求1所述的基于并行执行的数据同步的方法,其特征在于,所述根据每个操作的唯一标识符对所述每个操作构造行锁,具体包括:在每个执行线程中创建一个行锁哈希表,以每个操作的唯一标识符为行锁哈希表的key,以每个操作为行锁哈希表的一个记录。
3.根据权利要求2所述的基于并行执行的数据同步的方法,其特征在于,所述判断每个执行线程中的当前事务是否与提交顺序在其之前的事务存在行锁冲突,具体包括:
获取第一执行线程的行锁哈希表为第一行锁哈希表;
获取第二执行线程的行锁哈希表为第二行锁哈希表,其中,第二执行线程的当前事务提交顺序在第一线程之前;
判断第一行锁哈希表和第二行锁哈希表中是否存在相同的key;
若存在相同的key,表示第一线程的当前事务与第二线程的当前事务存在行锁冲突;
若不存在相同的key,表示第一线程的当前事务与第二线程的当前事务不存在行锁冲突;
对每一组第一线程和第二线程逐一比较,判断每两个线程间是否存在行锁冲突。
4.根据权利要求1所述的基于并行执行的数据同步的方法,其特征在于,所述将当前事务放入与其存在行锁冲突的事务相应的唤醒队列中进行等待,具体包括:<...
【专利技术属性】
技术研发人员:孙峰,付铨,彭青松,刘启春,
申请(专利权)人:武汉达梦数据库有限公司,
类型:发明
国别省市:湖北;42
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。