有关dbms_stats.gather_table_stats的问题

Man*_*j R 1 database oracle oracle10g

我只是有一个关于dbms_stats.gather_table_stats的简单问题.在我们的应用程序中,此语句在创建表的索引之后发生.它被称为

 EXEC DBMS_STATS.GATHER_TABLE_STATS(< schemaname >, < tablename >)
.我们使用的是Oracle 10.2g.现在的问题是什么时候会收集到什么信息呢?是否会在每次更新表格时,或满足某些标准时收集?或者只有当你再次调用gather_table_stats时它才会被收集?

Gar*_*ers 5

调用包时会收集统计信息(并且在收集完成之前包不会返回).

通常情况下,会有一个自动作业会收集现有统计数据已" 过时 "的统计信息.已选择进行监视的表将在插入/删除/更新时记录一些额外数据(通过dba_tab_modifications可见).

当10%的行被更改时,统计数据是"陈旧的",并将在下一个自动作业期间重新收集.检查DBA_JOBS以查看是否/何时将数据库配置为在陈旧表上收集统计信息(提示 - 避免在繁重的使用时间内执行此操作).