gpt4 book ai didi

oracle11g - 为什么表统计信息被锁定?

转载 作者:行者123 更新时间:2023-12-03 23:19:15 25 4
gpt4 key购买 nike

我很困惑,因为许多架构上的某些表没有收集统计​​信息。这些表上次在晚上进行了分析,我认为它是由启用的作业自动优化器统计作业完成的。当我尝试通过接收手动收集统计信息时,我意识到了这一点:

ora-20005 object statistics are locked

在 Tuning Advisor 订购后收集长时间运行查询的统计信息。

什么可以锁定此统计数据?可以默认禁用吗?我认为没有人这样做,因为从长远来看,这种行为没有任何好处。


经过一番研究,我找到了部分答案: https://blogs.oracle.com/optimizer/entry/maintaining_statistics_on_large_partitioned_tables

我还发现,通过每天晚上运行的分区程序,分区表的统计信息被锁定,有一行:

dbms_stats.lock_table_stats(...)

我想知道这是好还是坏做法?我想不久前它还不错,但自从 Oracle 11g 以来它就完全没有意义了。我将尝试引入增量统计维护方法( docs ),而不是禁用全局统计收集,我认为这是不推荐的想法......

最佳答案

为什么你认为“它毫无意义”?

锁定统计数据既不好也不坏。这完全取决于您锁定它们的原因。据推测,过去有人发现了锁定统计数据可以解决的某种问题。您需要找出问题所在以及它是否仍然是一个问题。例如,如果您的表包含大量 transient 数据,您可能希望在表相对较满时收集统计信息并锁定统计信息,以便自动统计信息收集作业不会在表大部分为空时意外运行并导致当表已满时,稍后进行非常昂贵的表扫描。

如果要解决的问题是收集分区表的全局统计信息很慢,那么使用增量统计信息维护可能是一个更好的解决方案。然而,鉴于增量统计维护不是默认行为,认为“不推荐”替代方法是不正确的。特别是当您拥有满足您需求的现有解决方案时。

关于oracle11g - 为什么表统计信息被锁定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25012636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com