2014-11-25 181 views
3

我正在研究oracle 11g数据库。系统ATM有许多与交易相关记录的历史表。我们遇到的问题是交易历史信息记录跨越多个表格。作为一个例子,我们有TransactionDetail表有版本列和TransactionQuestions表有它自己的版本列。当需要检索历史信息时,使用大量视图从数据库中获取这些数据 - 速度非常慢,并且由于版本和许多联接的大小和复杂性,我们不断发现错误。海量视图与历史记录表

我们想要采取的方法是将数据保存在多个历史记录表中,仅用于以后加入大量视图中,之后将每个事务的整个系统状态保存到具有大量列的庞大表中, PK的指数和 - 问题解决。

这将解决我们的性能问题,因为数据将在没有聚合的情况下被检索。
我眼中最大的缺点是表格方法的最大缺点是,如果在SQL视图结构中存在错误,它可以被修复,并且实际的历史数据不会受到影响,如果机制存在错误(将从视图移到代码本质上)将数据写入历史记录表 - 数据已损坏并且无法修复。

与组合来自多个历史记录表的数据相比,海量历史记录表会带来哪些其他缺点?

回答

3

您是否考虑过创建materialized view?物化视图具有显着更好的存储特性,同时仍然允许规范化的表结构。他们有一些权衡,包括更高的磁盘使用率(基本上形式化“庞大的历史表”)。这基本上可以创建您的大量历史记录表,并且可以让oracle将繁琐的序列化变更提交到规范化的表中。