分析查询执行 - Amazon Redshift
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

分析查询执行

注意

Amazon Redshift 有新的控制台可用。根据您使用的控制台,选择新控制台原始控制台说明。默认情况下会打开新控制台说明。

分析查询

  1. 登录到Amazon Web Services Management Console,然后打开 Amazon Redshift 控制台https://console.aws.amazon.com/redshift/

  2. 在导航菜单上,选择 QUERIES (查询),然后选择 Queries and loads (查询和加载) 以便显示您的账户的查询列表。您可能需要在该页面上更改设置才能找到您的查询。

  3. 在列表中选择 Query (查询) 标识符以便显示 Query details (查询详细信息)

    Query details (查询详细信息) 页面包含 Query details (查询详细信息)Query plan (查询计划) 选项卡以及查询相关指标。

    注意

    您还可以导航到查询详细信息页面从群集详细信息页面,查询历史记录选项卡,当您向下钻取到Query runtime (查询运行时间)图形。

Query details (查询详细信息) 页面包含以下部分:

  • Rewritten queries (重写查询) 的列表,如以下屏幕截图所示。

  • Query details (查询详细信息) 部分,如以下屏幕截图所示。

  • Query details (查询详细信息) 选项卡,其中包含所运行的 SQL 和有关此运行的 Execution details (执行详细信息)

  • Query plan (查询计划) 选项卡,其中包含 Query plan (查询计划) 步骤和有关此查询计划的其他信息。此表还包含当查询运行时的集群的图表。

    • Cluster health status (集群运行状况)

    • CPU 使用率

    • Storage capacity used (已使用的存储容量)

    • Active database connections (活动的数据库连接数)

查看查询执行详细信息

  1. 登录到Amazon Web Services Management Console,然后打开 Amazon Redshift 控制台https://console.aws.amazon.com/redshift/

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

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

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

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

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

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

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

这些区域有:查询执行详细信息的 部分查询视图提供查询处理方式的相关信息。本部分结合了来自 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_REPT 以及其他系统视图和表来呈现实际查询性能,并将其与查询的说明计划进行对比。此类信息显示在 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 (行吞吐量) 指标。如果其中一个集群节点相对于其他节点显示为具有更高的行吞吐量,则该工作负载在集群节点中分布不均匀。一个可能原因是您的数据在节点切片中分布不均匀或偏斜。有关更多信息,请参阅确定具有数据偏斜或未排序行的表

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

注意

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