Amazon Redshift
集群管理指南 (API 版本 2012-12-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

分析查询执行

Query 视图的 Query Execution Details 部分提供关于查询处理方式的信息。本部分结合了来自 SVL_QUERY_REPORTSTL_EXPLAIN 以及其他系统视图和表的数据。

Query Execution Details (查询执行详细信息) 部分有三个选项卡:

  • Plan。此选项卡提供所显示查询的说明计划。

    Plan 选项卡上的信息类似于在数据库中运行 EXPLAIN 命令后显示的信息。EXPLAIN 命令会检查您的查询文字,并返回查询计划。您可以使用此类信息评估查询,还可以根据需要进行修订以提高效率与性能。EXPLAIN 命令不会实际运行查询。

    以下示例显示了一个查询及其查询计划,该查询根据 2008 年售出的票数返回了圣地亚哥排名前五的卖方。

    explain select sellerid, username, (firstname ||' '|| lastname) as name, city, sum(qtysold) from sales, date, users where sales.sellerid = users.userid and sales.dateid = date.dateid and year = 2008 and city = 'San Diego' group by sellerid, username, name, city order by 5 desc limit 5;

    有关如何理解说明计划的更多信息,请参阅 Amazon Redshift 数据库开发人员指南 中的分析说明计划

    当您实际运行查询时(忽略 EXPLAIN 命令),引擎可能会寻找方法来优化查询性能并更改处理查询的方式。查询的实际性能数据存储在系统视图中,例如 SVL_QUERY_REPORTSVL_QUERY_SUMMARY

    Amazon Redshift 控制台结合使用 STL_EXPLAIN、SVL_QUERY_REPORT 以及其他系统视图和表来呈现实际查询性能,并将其与查询的说明计划进行对比。此类信息显示在 Actual 选项卡上。在某些情况下,您可能会发现说明计划和实际查询执行步骤不同。在这些情况下,您可能需要在数据库中执行一些操作 (例如 ANALYZE) 以更新统计数据和提高说明计划的效率。

    此外,查询优化程序有时会将复杂的 SQL 查询分解为几个部分,并使用命名约定 volt_tt_guid 来创建临时表,以更高效地处理查询。在这种情况下,说明计划和实际查询执行摘要均适用于最后运行的语句。您可以查看之前查询的 ID,以了解查询各个对应部分的说明计划和实际查询执行摘要。

    有关说明计划和系统视图及日志之间区别的更多信息,请参阅 Amazon Redshift 数据库开发人员指南 中的分析查询摘要

  • Actual。此选项卡显示所执行查询的实际步骤和统计数据。此信息显示在 Timeline (时间表)Execution time (执行时间) 的文字层次结构和可视图表中。

    Timeline (时间表) 视图显示实际查询步骤的执行顺序。

    Execution time (执行时间) 视图显示查询的每个步骤所耗的时间。它还可用于了解哪些步骤的完成时间较长。

    每个视图显示 Avg time (平均时间)Max time (最长时间)

    Avg 统计数据显示该步骤在数据切片间的平均执行时间,以及占总查询运行时间的百分比。Max (最大值) 统计数据显示该步骤在任意数据切片的最长执行时间,以及偏移值。偏移值 指的是该步骤的平均执行时间和最长执行时间之间的差值。

    如果两种情况都存在,您可能希望调查一个步骤。一个情况是最大执行时间持续超过多次查询运行的平均执行时间的两倍。另一个情况是该步骤消耗了大量时间 (例如,是大型查询中执行时间排名前三的步骤之一)。

    注意

    如果可能,您应该运行查询两次以查看执行详细信息通常是怎样的。导致首次运行查询开销增加的编译,在之后的运行中没有出现。

    您可以选择图表中的任意栏以将通过说明计划估算的数据与查询的实际性能进行比较,如下所示。

    如果查询优化程序在 STL_ALERT_EVENT_LOG 系统表中发布了针对查询的提醒,则与提醒相关的计划节点将标记有提醒图标。

  • Metrics (指标)。此选项卡显示了所执行查询的指标。

    Rows returned (返回的行) 指标是在查询的每个步骤中生成的行数的总和。

    Bytes returned (返回的字节) 指标显示了每个集群节点返回的字节数。

    Execution time (执行时间) 指标显示了每个集群节点的查询执行时间。

    Row throughput (行吞吐量) 指标显示了返回的行数除以每个集群节点的查询执行时间后的值。

    如果查询运行速度低于预期,您可以使用 Metrics (指标) 选项卡排查这一问题。查看 Row throughput (行吞吐量) 指标。如果其中一个集群节点相对于其他节点显示为具有更高的行吞吐量,则该工作负载在集群节点中分布不均匀。一个可能原因是您的数据在节点切片中分布不均匀或偏斜。有关更多信息,请参阅发现具有数据偏斜或未排序行的表

    如果您的数据分布均匀,则您的查询可对主要位于该节点上的行进行筛选。要修复这一问题,请查看查询中表的分布方式,看看有无任何可以改进之处。在进行任何更改之前,请务必权衡查询的性能及其他重要查询和系统的整体性能。有关更多信息,请参阅选择数据分布方式

注意

指标选项卡不适用于单节点集群。

使用控制台查看查询执行详细信息

使用以下过程查看查询执行的详细信息。

查看查询执行详细信息

  1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon Redshift 控制台:https://console.amazonaws.cn/redshift/

  2. 在导航窗格中,选择 Clusters

  3. 对于 Cluster (集群),选择要您查看其查询执行详细信息的集群。

  4. 选择 Queries (查询) 选项卡,打开您要查看其性能数据的查询。

  5. 展开 Query Execution Details 部分,然后执行以下操作:

    1. Plan 选项卡上,查看该查询的说明计划。在某些情况下,您可能会发现您的说明计划与 Actual (实际) 选项卡上的实际查询执行不同。在这些情况下,您可能需要运行 ANALYZE 以更新统计数据或对数据库执行其他维护以优化您运行的查询。有关查询优化的更多信息,请参阅 Amazon Redshift Database Developer Guide 中的优化查询性能

    2. Actual 选项卡中,查看与查询执行中的各个计划节点关联的性能数据。您可以选择层次结构中的单个计划节点,查看与该特定计划节点关联的性能数据。此数据包含估算和实际性能数据。

    3. Metrics (指标) 选项卡上,查看每个集群节点的指标。