我正在开发一个oracle 11g数据库。系统ATM具有许多与事务相关的记录的历史表。我们遇到的问题是交易历史信息记录跨越多个表。作为一个例子,我们有TransactionDetail
表,其中包含版本列和TransactionQuestions
表,其中包含自己的版本列。当需要检索历史信息时,使用大量视图从数据库中获取这些数据 - 它非常慢,并且由于版本和许多连接的大小和复杂性,我们不断发现错误。
我们想要采取的方法是将数据保存在多个历史表中,出于以后加入大量视图的唯一目的是将每个事务的整个系统状态保存到包含大量列的大量表中,放入索引关于PK和 - 问题解决了。
这将解决我们的性能问题,因为无需聚合即可检索数据 在我看来,表格方法的最大缺点是,如果SQL View结构中存在错误,可以修复它并且实际历史数据不会受到影响,如果机制中存在错误(可能会从视图移动到代码)数据到历史表 - 数据变得腐败,无法修复。
与结合来自多个历史记录表的数据的视图相比,大规模历史记录表会带来哪些其他缺点?
答案 0 :(得分:3)
您是否考虑过制作materialized view?物化视图具有明显更好的存储特性,同时仍允许规范化表结构。他们有一些权衡,包括更高的磁盘使用率(基本上正式化"大规模历史表")。这基本上创建了你的大规模历史表,并让oracle重做序列化更改到规范化表。