小编osc*_*tin的帖子

Oracle 10g:正确使用 ora_rowscn 检测表行更改(即插入、更新、删除)

对检查表的记录上次更新、修改或删除时间的一些研究使我找到了称为 ora_rowscn 的伪列。

首先,我这样做:

select max(ora_rowscn) from tablename;

我记下了这个数字。然后我执行插入、更新和删除,检查每个之前和之后的最大值。它似乎随着每种类型的变化而增加。

如果您想知道我为什么要这样做,我们会在 C# windows 服务中缓存实体列表。此服务在两个负载平衡的服务器上运行,因此每个服务器都有一个单独的实例运行。当服务器 A 上发生更新时,服务器 B 需要知道它。我想要做的是将 max(ora_rowscn) 缓存到一个变量中。每次我们的应用程序插入、更新或删除一条记录时,它都会从数据库中获得一个新的最大值。如果值不同,那么它显然知道它需要从数据库中获取一个新列表。

所以我的实际问题是:是否还有其他我应该注意的问题可能会导致插入、更新或删除记录而不增加该值?

编辑:有人可以添加ora_rowscn为标签吗?

delete oracle-10g insert update

6
推荐指数
2
解决办法
3万
查看次数

Teradata:如何设计要使用许多外键列进行规范化的表?

我正在 Teradata 中设计一个大约有 30 列的表。这些列将需要存储多个时间间隔样式的值,例如 Daily、Monthly、Weekly 等。将实际字符串值存储在表中是一种糟糕的设计,因为这会导致严重的数据重复。相反,我想做的是创建一个原始查找表。该表将保存 Daily、Monthly、Weekly,并将使用 Teradata 的标识列来派生主键。这个主键然后将存储在我创建的表中作为外键。

该表将设计如下:

ID 类型值
--- ------------ ------------
每天 1 次间隔
2 间隔每月
3 间隔每周
4 时间帧 24x7
5 时间帧 8x5

这对我的应用程序很有效,因为我需要知道的只是填充 Web 表单下拉列表时的原始键值。但是,我们使用的其他应用程序需要运行报告或通过提要接收这些数据。因此,需要创建一个视图,将这个表连接到基元表,以便它可以实际返回 Daily、Monthly 和 Weekly。

我关心的是性能。

我从未创建过包含如此大量外键字段的表,并且对 Teradata 还相当陌生。在我走上漫长的道路以艰难的方式弄清楚这一切之前,我希望获得任何建议,以实现我的目标的最佳方式。

performance foreign-key primary-key teradata

5
推荐指数
1
解决办法
1685
查看次数