收集数据库统计信息

Vertica 基于成本的查询优化器依赖数据统计信息来生成查询计划。如果统计信息不完整或已过时,优化器将倾向于使用不理想的计划来执行查询。

查询表时,Vertica 优化器会按以下方式检查统计信息:

  1. 如果表已分区,则优化器会检查该查询所需的分区最近是否已被分析过。如果已分析,则优化器将检索这些统计信息并使用它们来促进查询计划。

  2. 否则,优化器将使用表级别的统计信息(如果可用)。

  3. 如果没有可用的有效分区或表级别的统计信息,则优化器将假设数据值均匀分布,且所有投影的存储使用量均相等。

统计管理功能

Vertica 提供了两个函数来生成有关表数据的最新统计信息: ANALYZE_STATISTICSANALYZE_STATISTICS_PARTITION 分别收集表级别和分区级别的统计信息。计算统计数据之后,这两个函数将数据存储在数据库编录中。

这两个函数均执行以下操作:

  • 使用 历史查询(最新时期)收集统计信息,不会进行任何锁定。

  • 执行快速数据采样,从而加速具有大量列的相对较小的表的分析。

  • 识别已删除的数据而不是忽略删除标记。

Vertica 还提供了多种函数来帮助您管理数据库统计信息,例如,导出导入统计信息、验证统计信息和删除统计信息。

在收集所需统计信息后,可以运行工作负载分析器来检索有关表现不佳的查询及其根本原因的提示,并获得调整建议。