【发布时间】:2018-10-23 19:07:28
【问题描述】:
目前在我的数据库中,我从事数据库工作的前任创建了一项工作,该工作在每个周末收集数据库中所有表的列表,并为每个表分别按以下顺序执行以下两个命令:
ANALYZE TABLE xxTable_Namexx ESTIMATE STATISTICS FOR ALL INDEXED COLUMNS SIZE 75 SAMPLE 100 PERCENT;
EXEC dbms_stats.gather_table_stats(xxSchemaxx,xxTable_Namexx,cascade=>TRUE);
最近有人向我建议:
1.) ANALYZE 表是收集统计数据的旧方法,优化器不再使用它?这个命令的统计数据在整个数据库中是无用的,还是在某处使用?
2.) 不用做所有这些,每天运行就足够了:
dbms_stats.gather_schema_stats(xxSchemaxx,cascade=>true);
如果没有指定,大小/样本百分比是多少??
3.) 在数据库中收集统计数据的一般做法/频率是什么。 (数据每天都在更新、插入、删除)。我还是更喜欢每个周末都这样做。
提前致谢。
【问题讨论】:
-
@a_horse_with_no_name 感谢您的链接。这是非常有帮助和启发性的!
标签: oracle oracle11g database-administration