各种数据库同步中的时间戳机制总结

0    304    3

Tags:

👉 本文共约1448个字,系统预计阅读时间或需6分钟。

简介

增量同步,一般有CDC时间戳这2种办法。

CDC(Change Data Capture,变更数据捕获)主要使用日志进行同步,例如OGG工具就是CDC的一种。

基于时间戳的方法,就是在表上增加一列,在增加和修改时,更新该列的值即可。

通过时间戳的方式来同步的话,只能对UPDATE和INSERT起作用,对于DELETE物理删除操作,或源端删除数据时只修改数据有效标志,可以定期通过主键比对然后同步删除数据。

Oracle

对于Oracle来说,可以使用ORA_ROWSCN来获取数据变更。ora_rowscn默认为块级别的跟踪,即该块上有任何一行进行了修改,该块的ora_rowscn都发生变化,而且一个块的ora_rowscn是相同的。若要精确捕获每行的变化,则需要开启行级别的跟踪。

select * 不会显示ORA_ROWSCN列,必须显式指定该列才可以。

缺点:

1、需要重建表,增加ROWDEPENDENCIES参数,才能启用行级别的跟踪。默认为块级别跟踪。不能通过后期的alter table语句来将表修改为ROWDEPENDENCIES。

2、每行会增加6字节的存储空间。

3、启用了ROWDEPENDENCIES后就不能再进行压缩操作。

4、通过user_tables.dependencies可以查看表是行级别还是块级别。

详细请参考:https://www.dbaup.com/oraclezhongdeora_rowscnhanshudezuoyongshishenme.html

注意:Oracle到目前的最新的23c,都是没有ROWVERSION数据类型的。

SQL Server

对于SQL Server来说,可以使用rowversion列来获取数据变更。

缺点:

1、需要新增字段rv,类型为rowversion或timestamp

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复