Performance 使用Oracle DBMS_WM.EnableVersioning的性能影响

Performance 使用Oracle DBMS_WM.EnableVersioning的性能影响,performance,oracle,rdbms,oracle11g,Performance,Oracle,Rdbms,Oracle11g,在Oracle(DBMS_WM.EnableVersioning)中启用版本控制(Oracle称之为工作区管理的一部分)的命令会创建无法索引的非物化视图。这会降低性能,还是在查询视图时会使用_AUX、_LT和_LCK表的索引 启用版本控制时,除了索引之外,是否存在重大的性能问题 我使用的是Oracle 11g。与大多数东西一样,这取决于具体情况 您现在是否有需要进行表扫描以获取所有数据的查询?还是所有的东西都要通过索引 用例是什么?您是否使用Workspace Manager支持长时间运行的事

在Oracle(DBMS_WM.EnableVersioning)中启用版本控制(Oracle称之为工作区管理的一部分)的命令会创建无法索引的非物化视图。这会降低性能,还是在查询视图时会使用_AUX、_LT和_LCK表的索引

启用版本控制时,除了索引之外,是否存在重大的性能问题


我使用的是Oracle 11g。

与大多数东西一样,这取决于具体情况

  • 您现在是否有需要进行表扫描以获取所有数据的查询?还是所有的东西都要通过索引
  • 用例是什么?您是否使用Workspace Manager支持长时间运行的事务?或者在单个实时工作区中维护历史数据
  • 行的更改频率是多少?您计划保留一行的几个版本
如果现有的查询将执行表扫描,表将每晚重建,并且计划永久保留历史数据,则可能会出现重大性能问题。如果您的所有查询都使用索引来访问数据,那么行很少更改,并且您只想保留一些版本的历史记录,那么基础表上的索引就足够了

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


既然你在11G,你也可以考虑。在企业许可证之上,这是一个额外的成本选项,但它提供了一个更高效的体系结构,用于跟踪随时间变化的数据,假设您打算在固定的时间段内存储所有更改。另一方面,在不导致丢弃历史记录的情况下,您可以发布的DDL更加有限,这在我所处理的应用程序中往往是一个相当严重的限制。

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

  • 您现在是否有需要进行表扫描以获取所有数据的查询?还是所有的东西都要通过索引
  • 用例是什么?您是否使用Workspace Manager支持长时间运行的事务?或者在单个实时工作区中维护历史数据
  • 行的更改频率是多少?您计划保留一行的几个版本
如果现有的查询将执行表扫描,表将每晚重建,并且计划永久保留历史数据,则可能会出现重大性能问题。如果您的所有查询都使用索引来访问数据,那么行很少更改,并且您只想保留一些版本的历史记录,那么基础表上的索引就足够了

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


既然你在11G,你也可以考虑。在企业许可证之上,这是一个额外的成本选项,但它提供了一个更高效的体系结构,用于跟踪随时间变化的数据,假设您打算在固定的时间段内存储所有更改。另一方面,在不导致丢弃历史记录的情况下,您可以发布的DDL更为有限,这在我所处理的应用程序中往往是一个相当严重的限制。

将有一些查询执行表扫描,我在单个实时工作区中维护历史记录。但是,任何特定的行都只会更改1-3次。我得到的印象是,我们应该没事,但探索WM的替代方案可能是明智的。谢谢。将有一些查询执行表扫描,我在一个实时工作区中维护历史记录。但是,任何特定的行都只会更改1-3次。我得到的印象是,我们应该没事,但探索WM的替代方案可能是明智的。谢谢