gpt4 book ai didi

oracle - DBMS_STATS会分析表吗?

转载 作者:行者123 更新时间:2023-12-02 05:49:40 24 4
gpt4 key购买 nike

我使用DBMS_STATS.GATHER_SCHEMA_STATS过程来收集代码中的统计信息。

BEGIN
DBMS_STATS.gather_schema_stats
(ownname => '<SCHEMA NAME',
estimate_percent => DBMS_STATS.auto_sample_size,
options => 'GATHER STALE',
DEGREE => NULL,
CASCADE => DBMS_STATS.auto_cascade,
granularity => 'auto'
);
end;

我的问题:执行此代码后,我使用TOAD工具检查了表的上次分析日期,它显示了一些其他过去的日期而不是当前日期当我运行 DBMS_STATS.GATHER_SCHEMA_STATS 过程时。

这是否意味着 DBMS_STATS 不会分析该表?

最佳答案

当您指定选项GATHER STALE时,您是在告诉Oracle您只想收集自上次收集该对象统计信息以来发生“重大”更改的对象的统计信息。如果Oracle确定自上次收集统计信息以来该表没有发生太大变化,则它不会再次收集统计信息。

Oracle 通过监视这些表上的 DML 来确定表已发生重大更改(Oracle 默认情况下监视 11g 中的表 - 您必须在早期版本中启用监视)。该数据会定期(大约每隔几个小时)写入DBA_TAB_MODIFICATIONS。当DBMS_STATS使用GATHER STALE选项运行时,Oracle会将DBA_TAB_MODIFICATIONS中的大致更改数量与表的先前统计信息进行比较,以确定是否足够行已更改,因此值得再次收集统计信息。

关于oracle - DBMS_STATS会分析表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7837301/

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