统计信息收集最佳实践

当以下一个或多个条件成立时,您应调用 ANALYZE_STATISTICS 或 ANALYZE_STATISTICS_PARTITION:

  • 首次加载大量数据。

  • 刷新了新的投影。

  • 行数发生显著变化。

  • 向表中添加了新列。

  • 列最小值/最大值发生显著变化。

  • 添加了具有参照完整性约束的新主键值。应当重新分析主键和外键表。

  • 表与所联接到的表的相对大小发生了显著变化,例如,表之前比其他表大五十倍,现在只比其他表大五倍。

  • 重新计算直方图所必需的数据分布情况发生了显著偏差,例如,某个事件导致特定股票的交易量变得异常高。

  • 数据库数据库长时间处于非活动状态。

开销注意事项

运行 ANALYZE_STATISTICS 是一种有效但可能需要运行较长时间的操作。在生产环境中,您可以将其与查询和加载操作并发运行。然而,参数会给系统资源(CPU 和内存)带来很大开销,以致于给查询和加载操作带来不利影响。为了最大限度地减少开销,请考虑在那些受到重大活动影响的分区上调用 ANALYZE_STATISTICS_PARTITIONS(通常是指最近加载的分区,其中包括表的活动分区)。您可以指定表列的子集(通常是查询次数最多的列),进一步缩小这两个函数的范围。

相关工具

您可调用 ANALYZE_WORKLOAD,并利用它返回的优化建议诊断和解决与统计信息有关的许多问题。如果更新统计信息后依然发现查询性能不佳,请通过 Database Designer 运行询问,然后选择增量作为设计类型。