查询计划成本预估

查询优化器根据成本预估选择查询计划,并使用来自各种来源的信息开发潜在计划和确定其相对成本。这些包括:

  • 表的行数

  • 列统计信息,包括:不同值(基数)的数量、最小/最大值、值分布和磁盘空间使用情况

  • 可能需要的 I/O 操作最少、CPU 最低、内存最少、网络使用最少的访问路径

  • 可用的合适投影

  • 联接选项:联接类型(合并与散列联接)、联接顺序

  • 查询谓词

  • 群集节点上的数据分段

许多重要的优化器决策均依赖于统计信息,查询优化器使用这些信息来确定执行查询的最终计划。因此,统计信息保持最新非常重要。没有合理的准确统计信息,优化器可能选择不理想的计划,从而导致查询性能受影响。

Vertica 提供有关查询计划中的统计信息的提示。请参阅查询计划统计信息

成本与执行运行时间

尽管成本与查询运行时间相关,但它们并不能 预估 出实际运行时间。例如,如果优化器确定计划 A 的成本为计划 B 的两倍,则计划 A 的运行时间可能会更长。但是,此成本预估并不一定表示计划 A 的运行时间是计划 B 的两倍。

此外,不同查询的计划成本不能直接相比。例如,如果查询 1 的计划 X 的估计成本高于查询 2 的计划 Y 的成本,计划 X 的运行时间不一定就比计划 Y 的运行时间长。