Amazon Redshift
管理指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

分析查询执行

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

Query Execution Details 部分有两个选项卡:

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

  • Actual。此选项卡显示所执行查询的实际步骤和统计数据。这些信息显示在文字层次结构和可视图表中。将光标悬停在图表中的任意栏即可查看相关步骤的 AvgMax 统计数据,如下所示。

    Avg 统计数据显示该步骤在数据切片间的平均执行时间,以及占总查询运行时间的百分比。Max 统计数据显示该步骤在任意数据切片的最长执行时间,以及偏移值。偏移值指的是该步骤的平均执行时间和最长执行时间之间的差值。如果某个步骤出现以下情况,您可能需要对其进行调查:在多次运行查询期间,最长执行时间始终是平均执行时间的两倍以上;该步骤花费了大量时间(例如,在大型查询中,该步骤的执行时间排名前三)。

    注意

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

    要调查某个步骤出现的高偏移值情况,请检查分配步骤的查询计划,了解查询中执行的是哪种分配类型,然后查看您的数据分配策略,看看是否需要进行修改。有关 Amazon Redshift 数据分配的更多信息,请转到 Amazon Redshift Database Developer Guide 中的选择数据分配样式

    您可以单击图表中的任意栏,比较通过说明计划估算的数据和查询的实际性能,如下所示。

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

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

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

Copy
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 Database Developer Guide 中的分析说明计划

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

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

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

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

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

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

查看查询执行详细信息

  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 选项卡中,查看与查询执行中的各个计划节点关联的性能数据。您可以单击层次结构中的单个计划节点,查看与该特定计划节点关联的性能数据。这些数据包括估算和实际性能数据。