您的位置 首页 方案

深化分析削减每次同步数据量的6个办法

说到同步数据,大最为较关心的就是如何尽可能地减少每次的同步数据量,以此来提高同步效率,降低对网络带宽的消耗。针对大批量的数据同步,这一点是必须注意的。解决这个问题的关键点在于获取差异数据,这也就是说,

提到同步数据,大最为较关怀的便是怎么尽或许地削减每次的同步数据量,以此来进步同步功率,下降对网络带宽的耗费。针对大批量的数据同步,这一点是有必要留意的。处理这个问题的要害点在于获取差异数据,这也便是说,咱们只是同步改动了的数据,至于没有改动的,就不再同步。下文中,咱们将介绍削减每次同步数据量的6个办法:

1.日期栏位(时刻戳)

一般情况下,在规划表的时分,增加两个日期栏位,CreatedOn, ChangedOn, 别离记载数据发生时刻和改动时刻。同步程序能够依据两个栏位来获取差异的数据。

2.Trigger

它能够实时获取差异数据, Trigger运用较为简略,不需求改动原表的结构,能够只监督部分的栏位改动,以获取你需求的改动数据,并对数据做二次处理。Trigger需求你对源表的保护情况比较了解,不然或许发生一些意想不到的影响。

3.SQLServer自身的仿制服务

自身支撑多种数据同步办法,功用很强壮,可是运用上会比较复杂,并且假如在同步过程中,需求对差异数据做二次处理,好像无路可走。

这种办法能够确保随时获取某个时刻段内新增(改动)的数据,一起关于追寻问题也大有裨益。可是缺点也不少,其一是这两个栏位完全由开发人员操控,实在确保这两个栏位每次都得到正确的保护比较困难,其二是不简略确认你下一次取差异数据的基准时刻。

4.timestamp栏位

timestamp能够理解为行的版本号,每次刺进或更新包括 timestamp 列的行时,timestamp 列中的值均会更新。运用这一特性,树立一个包括源表ID和timestamp值的基准表,就能够找到哪些数据发生改动了,每次同步成功后,再更新该基准表。

5.监控并记载根据某数据目标的一切DML句子

这种办法,我没有详细尝试过,可是一个很不错的思路,假如网络情况糟糕,并且对数据实时性要求不高,能够选用。详细做法是每天守时获取你需求同步表的一切update, delete句子,然后定点打包发送到别的一台服务器履行。

6.运用BINARY_CHECKSUM

这个是我以为最简略的办法。BINARY_CHECKSUM是SQLServer内置的一个聚合函数,它能够针对一行,或许某些列核算出一个值,假如它核算的那些列中的任何一个值发生改动,那么那个核算值就会发生改动。这样我只需树立一个包括源表ID和开始核算值的基准表,就能够找到哪些数据发生改动了,每次同步成功后,再更新该基准表。与办法4不同的是,BINARY_CHECKSUM能够只监督部分改动的栏位,这一点又类似于Trigger了。

运用BINARY_CHECKSUM有些约束,由于它在核算中会疏忽具有不可比数据类型的列(不可比数据类型是 text、ntext、image、cursor 以及根本类型为前4个数据类型之一的 sql_variant),所以假如要监控这些列改动,这种办法是不起作用的。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/185622.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部