Oracle的表统计信息收集

Oracle的表统计信息收集,oracle,table-statistics,Oracle,Table Statistics,应在何时以及如何为Oracle、版本9及更高版本执行表统计数据收集?如果大型数据库的统计数据收集会与“工作时间”发生冲突,您将如何为其收集统计数据。每当数据内容发生重大更改(例如大量删除或插入)时,应收集统计数据。如果表结构已更改,则还应收集统计数据。建议使用“估算”选项 如果可能的话,可以在工作时间以外的自动流程中执行此操作,或者如果必须在工作时间内执行此操作,则选择对希望收集统计数据的表具有最低访问权限的时间。使用估计值(样本百分比)时,请确保收集的数据至少为10%。下面的内容可能会产生非常

应在何时以及如何为Oracle、版本9及更高版本执行表统计数据收集?如果大型数据库的统计数据收集会与“工作时间”发生冲突,您将如何为其收集统计数据。

每当数据内容发生重大更改(例如大量删除或插入)时,应收集统计数据。如果表结构已更改,则还应收集统计数据。建议使用“估算”选项


如果可能的话,可以在工作时间以外的自动流程中执行此操作,或者如果必须在工作时间内执行此操作,则选择对希望收集统计数据的表具有最低访问权限的时间。

使用估计值(样本百分比)时,请确保收集的数据至少为10%。下面的内容可能会产生非常可疑的结果。

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

我不同意您应该总是在大量删除或插入后重新生成统计数据。和以往一样,这要视情况而定。在数据仓库的情况下,当重新构建物化视图时,您将执行大量的删除和插入操作,但数据的基本结构不会改变

只有在表的内容发生重大变化时,才需要重新计算表的统计信息。这并不一定意味着在大量删除或插入之后,而是当删除、插入或更新实质性地改变了与可能的执行计划相关的内容时

如果要截断表并重建(这将重置统计信息),而不是进行昂贵的统计信息计算,通常最好先存储统计信息,然后在重建表后截断并恢复统计信息

要保存您使用的统计信息的当前视图,请执行以下操作:

dbms_stats.export_table_stats
dbms_stats.import_table_stats
要在以后恢复它们,请使用:

dbms_stats.export_table_stats
dbms_stats.import_table_stats

(对于
模式
数据库
有相应的程序)

我不同意使用估计的统计数据。在我(尽管有限)的经验中,就表格统计而言,“估计”是“无意义”的同义词。