目前在我的数据库中,我的前任在工作时创建了一个任务,每个周末都会收集数据库中所有表格的列表,并为每个表格依次执行以下两个命令:
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.) 在数据库中收集统计信息的一般做法/频率是什么?(数据每天都在更新、插入、删除)。我仍然更喜欢每个周末执行。
提前感谢。