Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

查询计划和执行工作流程

下图概要介绍查询计划和执行工作流程。

查询计划和执行工作流程遵循以下步骤:

  1. 领导节点接收查询并解析 SQL。

  2. 分析程序生成初步查询树,后者是原始查询的逻辑表示。然后,Amazon Redshift 将该查询树输入到查询优化程序中。

  3. 优化程序评估查询并根据需要重写查询,以最大限度地提高其效率。该过程有时会导致创建多个相关查询来代替单个查询。

  4. 优化程序生成一个或多个查询计划(如果上一步生成了多个查询),以实现最佳执行性能。查询计划指定执行选项,如联接类型、联接顺序、聚合选项和数据分配要求。

    您可以使用 EXPLAIN 命令查看查询计划。查询计划是分析和优化复杂查询的基本工具。有关更多信息,请参阅 查询计划

  5. 执行引擎将查询计划转换成步骤

    步骤

    每个步骤都是查询执行期间需要的单独操作。步骤可以组合,使计算节点能够执行查询、联接或其他数据库操作。

    多个步骤的组合可由单个进程完成,它也是计算节点切片可执行的最小编译单元。切片 是 Amazon Redshift 中并行处理的单元。流中的段并行运行。

    将在可用计算节点切片上分配的段的集合。

    执行引擎基于步骤、段和流生成编译后的 C++ 代码。编译代码的执行速度较解释代码快,占用的计算容量也较少。之后,编译代码被广播到计算节点。

    注意

    在测试查询的基准性能时,应始终比较查询的第二次执行时间,因为第一次执行时间包含用于编译代码的开销。有关更多信息,请参阅 影响查询性能的因素

  6. 计算节点切片并行执行查询段。在该流程中,Amazon Redshift 利用优化的网络通信、内存和磁盘管理,将中间结果从一个查询计划步骤传递到下一个,这也有助于加快查询的执行。

步骤 5 和 6 在每个流中只执行一次。引擎为某个流创建可执行的段并将它们发送到计算节点。当该流的段完成后,引擎为下一个流生成段。通过这种方式,引擎能够分析前一个流中的操作(如操作是否基于磁盘),以影响下一个流中段的生成。

计算节点完成后,它们将查询结果返回到领导节点进行最终处理。领导节点将数据合并为一个结果集,并执行任何必要的排序或聚合操作。之后,领导节点将结果返回给客户端。

注意

查询执行期间,计算节点可能会根据需要将某些数据返回给领导节点。例如,如果您有一个包含 LIMIT 子句的子查询,则在数据在群集间重新分配以进一步处理前会在领导节点上应用该限制。