针对Oracle的表统计信息收集

时间:2008-08-31 12:11:43

标签: oracle table-statistics

何时以及如何为Oracle,版本9及更高版本执行表统计信息收集?您将如何收集大型数据库的统计数据,其中统计数据收集将与“营业时间”发生冲突。

4 个答案:

答案 0 :(得分:5)

我不同意在有大量删除或插入后应始终重建统计信息。一如既往,这取决于。在数据仓库的情况下,当重新构建物化视图时,您将进行大量删除和插入,但数据的基本结构不会更改。

如果内容中存在重大更改,则只需重新计算表格的统计信息。在经过大量删除或插入后,必然意味着,而是删除,插入或更新实质上更改了与可能的执行计划相关的内容。

如果要截断表并重建(这将重置统计信息),而不是昂贵的统计计算,那么在重建表之前截断并恢复统计信息之前,最好先存储统计信息。

要保存您使用的统计信息的当前视图:

dbms_stats.export_table_stats

并在之后恢复它们:

dbms_stats.import_table_stats

schemadatabase有相应的程序。)

答案 1 :(得分:1)

只要数据内容发生很大变化(例如大量删除或插入),就应该收集统计信息。如果表结构已更改,您还应收集统计信息。建议使用'ESTIMATE'选项。

如果可能,请在营业时间之外将其作为自动流程执行,或者如果您必须在工作时间执行此操作,则选择您希望收集统计信息的表格的最低访问权限的时间。

答案 2 :(得分:0)

确保使用至少收集10%的估算值(sample_percent)。在此之下可能会产生非常可疑的结果。

答案 3 :(得分:0)

在收集时考虑备份当前的统计数据 - 这样你可以比较它们(如果你感兴趣的话),并且如果你的新统计数据导致问题,可能还原它们。请记住,统计信息用于确定执行计划 - 如果您希望更改执行计划,您可能只想收集它们。