大量视图 vs 历史表

3
我正在处理一个 Oracle 11g 数据库。系统 ATM 有很多用于记录交易相关记录的历史表。我们遇到的问题是事务历史信息记录跨越了多个表。例如,我们有一个名为 TransactionDetail 的表,它有一个版本列,还有一个名为 TransactionQuestions 的表,它有自己的版本列。当需要检索历史信息时,会使用大量视图从数据库中获取数据——这非常缓慢,并且由于版本和多个连接的大小和复杂性,我们不断发现错误。
我们考虑采取的方法是,不是将数据保存在多个历史表中,而是将每个交易的整个系统状态保存到一个具有许多列的大型表中,以便稍后联接到大量视图中,加上主键索引,问题得到解决。
这样可以解决性能问题,因为数据会被检索而无需聚合。
在我看来,表格方法最大的缺点是,如果 SQL 视图结构存在错误,则可以进行修复,实际历史数据不受影响;如果写入历史表的机制(本质上是从视图移到代码中)存在错误,则数据将变得损坏,可能无法修复。
巨大的历史表与从多个历史表中组合数据的视图相比,还会带来什么其他的缺点呢?
1个回答

3

您是否考虑创建物化视图? 物化视图具有更好的存储特性,同时仍允许规范化表结构。 它们有一些权衡之处,包括更高的磁盘使用率(基本上是正式化“大型历史表”)。这基本上创建了您的大型历史表,并允许Oracle将变更序列化到规范化的表中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接