首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TeraData的更改跟踪

TeraData的更改跟踪
EN

Stack Overflow用户
提问于 2013-03-15 04:31:07
回答 1查看 346关注 0票数 0

我们需要一种方法来了解自上次从TeraData数据库导入数据以来,该数据库中哪些行发生了更改。关于TeraData数据库中的表或表中的数据,没有任何东西可以证明是可靠的更改信号,我们可以使用它来确定这一点。在SQL Server中,尽管源系统是TeraData,但Change Tracking功能似乎完全符合我们的需要。有没有人知道,在TeraData数据库中,TeraData或使用TeraData的第三方工具中是否有一个功能可以有效地添加SQL Server更改跟踪提供的功能?

EN

回答 1

Stack Overflow用户

发布于 2020-04-26 05:54:10

Teradata是一个OLAP数据库。您在Sql Server中也引用的功能是用于OLTP类型处理。Teradata假定您将执行大型集合操作,而不是小的单行级别的操作。关于Teradata优化器和特性集的一切都是基于为这些大集合操作生成性能的。

我们能够跟踪Teradata数据库中的更改的唯一方法是:

  1. 将update timestamp属性添加到由更改数据的代码维护的表中。( UI或脚本或通过数据库中的触发器)
  2. 或在要跟踪的每个表上创建触发器。此触发器可以: A.仅将记录键和更新时间戳附加到另一个表。B.或者将整个属性集和更新时间戳
  3. 附加到另一个表,或者在每个时间窗口捕获整个表,并比较数据。我们只对非常小的数据集这样做。(域数据)

我们已经对包括Oracle和Teradata在内的各种源数据库执行了此操作。触发器相当简单,对于源表上的每个插入、更新和删除操作,都会在“数据捕获”表中添加一个新行。

最后,我们从模板中为每个需要捕获更改的表以及数据捕获表的DDL生成触发器。(我们也附加了副本)。数据捕获表具有与源表完全相同的属性,外加至少两个元数据属性:更改类型和时间戳。

此外,我们最终向元数据属性添加了一个“复制时间戳”,我们可以在提取数据时填写这些属性。这是必需的,因为数据可能会被追加到时间序列之外。换句话说,一个短事务可能在一个长时间运行的事务完成之前就完成了对数据捕获表的追加,这个长运行的事务很早就开始了。

这一切看起来可能比仅仅引用SQL服务器“更改跟踪”要复杂一些,但它非常简单,并且不会对数据库的整体性能产生太大影响。我们的测量结果是3%的影响,因为我们添加了所有的触发器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15419558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档