【问题标题】:Enable Constraint - Peformance Impact启用约束 - 性能影响
【发布时间】:2018-11-15 18:02:35
【问题描述】:

对于包含 7000 万条记录的表,以下语句会消耗大量时间。

ALTER TABLE <table-name>  ENABLE CONSTRAINT <constraint-name>

启用约束时是否扫描所有行。

即使启用了约束,进程也只是挂了 5 个多小时。

关于如何优化的任何想法

【问题讨论】:

  • “启用约束时表是否扫描所有行?” 是。
  • 至于优化它,可能没有那么多选择。一些细节会很有用。它是什么样的约束?为什么它被禁用了?禁用时发生了什么?
  • 取决于禁用约束的方式,请参阅the documentation。但通常 - 是 - 启用约束会导致扫描所有行以验证约束。
  • @APC-它是现有存储过程的一部分,我们可以启用此约束..它被禁用以更新某些列上的测试数据..发布它再次启用..但是这一步挂了,花了很多时间
  • 但这是什么样的约束呢?检查约束?首要的关键?外键?与启用更新相比,在更新之前禁用约束有什么好处?

标签: oracle oracle11g ddl database-administration


【解决方案1】:

正如大家之前所说,取决于约束类型,有可能通过 ALTER TABLE ENABLE NOVALIDATE CONSTRAINT 跳过验证现有数据。并通过一些额外的过程或查询来检查这些数据。

你可以在这里找到相关文档https://docs.oracle.com/cd/B28359_01/server.111/b28310/general005.htm#ADMIN11546

【讨论】:

    猜你喜欢
    • 2010-11-04
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-22
    • 2013-05-15
    • 2019-10-16
    相关资源
    最近更新 更多