3

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

4

4 回答 4

5

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

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

如果您正在截断表并重建(这将重置您的统计信息),而不是昂贵的统计信息计算,您通常最好在重建表后在截断和恢复它们之前存储统计信息。

要保存您使用的当前统计数据视图:

dbms_stats.export_table_stats

并在之后恢复它们,您可以使用:

dbms_stats.import_table_stats

schema(和有相应的程序database。)

于 2008-09-22T19:44:37.117 回答
1

每当数据内容发生较大更改时,都应收集统计信息,例如大量删除或插入。如果表结构发生了变化,您还应该收集统计信息。建议使用“ESTIMATE”选项。

如果可能,请在营业时间以外将其作为自动化流程执行,或者如果您必须在营业时间执行此操作,则选择一个对您希望为其收集统计信息的表格进行最少访问的时间。

于 2008-08-31T15:48:19.910 回答
0

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

于 2008-09-21T01:48:41.893 回答
0

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

于 2008-09-22T17:19:12.677 回答