2011-03-07 44 views
0

在Oracle(DBMS_WM.EnableVersioning)中启用版本控制(Oracle称之为Workspace Management的一部分)的命令会创建无法建立索引的非物化视图。这是否会导致性能下降,或者查询视图时是否会使用_AUX,_LT和_LCK表的索引?使用Oracle DBMS_WM.EnableVersioning时的性能影响

启用版本控制时除了索引之外是否还有重要的性能问题?

我正在使用Oracle 11g。

回答

4

与大多数情况一样,这取决于。

  • 您今天是否有查询需要进行表扫描以获取其所有数据?或者一切都将通过索引?
  • 什么是用例?您是否使用Workspace Manager来支持长时间运行的事务?或者将历史数据保存在一个LIVE工作区中?
  • 行的更改频率如何?你打算保留多少个版本?

如果现有的查询,会做表扫描,该表重建每天晚上,并计划在保持历史数据永远,你可能将有重大的性能问题。如果您的所有查询都使用索引来访问数据,那么行很少更改,而您只打算保留几个历史版本,那么基础表上的索引应该足够。

我们已经使用Workspace Manager永久保存相对缓慢变化的表的历史记录以及一个月内相对较快的变化表。我们已经使用它在几个应用程序中的表中维护离散的保存点,以便用户可以在有趣的时间点永久保存应用程序数据的状态。总的来说,我们对性能表示满意,尽管当优化器感到困惑时,复杂的查询偶尔会进入杂草。

既然你是11g,你也可以考虑Total Recall。这是一个在企业许可证之外的额外成本选项,但它提供了一个更高效的体系结构,用于随着时间的推移跟踪数据更改,假定您打算将所有更改存储在固定的时间段内。另一方面,在DDL中,你可以发出更多的限制,而不会导致历史被丢弃,这往往是我工作的应用程序中的一个相当严重的限制。

+0

会有一些执行表扫描的查询,我在一个活动工作区中维护历史记录。但是,任何特定的行只会改变1-3次。我觉得我们应该没问题,但是探索WM的替代品可能是明智的。谢谢。 – 2011-03-10 21:06:11