STL_QUERY_METRICS - Amazon Redshift

STL_QUERY_METRICS

包含已完成在用户定义的查询队列中运行的查询的指标信息(如处理的行数、CPU 利用率、输入/输出和磁盘利用率)。要查看当前运行的活动查询的指标,请参阅 STV_QUERY_METRICS 系统视图。

查询指标按一秒的间隔采样。因此,同一查询的不同运行可能返回稍微不同的时间。此外,运行不到 1 秒的查询段可能不会记录。

STL_QUERY_METRICS 可跟踪和聚合查询、段和步骤级别的指标。有关查询段和步骤的信息,请参阅查询计划和执行工作流程。很多指标(如 max_rowscpu_time 等)是跨节点切片进行合计的。有关节点切片的更多信息,请参阅数据仓库系统架构

要确定行在哪个级别报告指标,请检查 segmentstep_type 列。

  • 如果 segmentstep_type 均为 -1,则行在查询级别报告指标。

  • 如果 segment 不为 -1,而 step_type-1,则行在段级别报告指标。

  • 如果 segmentstep_type 均不为 -1,则行在步骤级别报告指标。

SVL_QUERY_METRICS 视图和 SVL_QUERY_METRICS_SUMMARY 视图将聚合此视图中的数据并以更容易访问的形式呈现信息。

STL_QUERY_METRICS 对所有用户可见。超级用户可以查看所有行;普通用户只能查看其自己的数据。有关更多信息,请参阅 系统表和视图中的数据可见性

此表中的部分或全部数据也可以在 SYS 监控视图 SYS_QUERY_DETAIL 中找到。SYS 监控视图中的数据经过格式化处理,便于使用和理解。我们建议您使用 SYS 监控视图进行查询。

表列

列名称 数据类型 描述
userid integer 运行生成条目的查询的用户的 ID。
service_class integer 服务类的 ID。查询队列在 WLM 配置中定义。仅对用户定义的队列报告的指标。
query integer 查询 ID。查询列可用于连接其他系统表和视图。
segment integer 段编号。一个查询包含多个区段,而且每个区段包含一个或多个步骤。查询段可并行运行。每个段在一个进程中运行。如果段值为 -1,则指标段值将汇总到查询级别。
step_type integer 运行的步骤的类型。有关步骤类型的说明,请参阅步骤类型
starttime timestamp 开始执行查询的时间(用 UTC 表示),有 6 位数字精度,可精确到小数秒。例如:2009-06-12 11:29:19.131358
切片 integer 集群的切片数。
max_rows bigint 某个步骤的最大行输出数(跨所有切片进行聚合)。
rows bigint 步骤处理的行数。
max_cpu_time bigint 使用的最大 CPU 时间(以微秒为单位)。在段级别,段的跨所有切片使用的最大 CPU 时间。在查询级别,查询段使用的最大 CPU 时间。
cpu_time bigint 使用的 CPU 时间(单位为微秒)。在段级别,段的跨所有切片的总 CPU 时间。在查询级别,查询的跨所有切片和段的 CPU 时间合计。
max_blocks_read bigint 段读取的 1 MB 数据块的最大数量(跨所有切片进行聚合)。在段级别,段的跨所有切片读取的 1 MB 数据块的最大数量。在查询级别,任何查询段读取的 1 MB 数据块的最大数量。
blocks_read bigint 查询或段读取的 1 MB 数据块的数量。
max_run_time bigint 段的最大已用时间(以微秒为单位)。在段级别,段的跨所有切片的最大运行时间。在查询级别,任何查询段的最大运行时间。
run_time bigint

跨所有切片合计的总运行时间。运行时间不包括等待时间。

在段级别,跨所有切片合计的段的运行时间。在查询级别,跨所有切片和段合计的查询的运行时间。由于此值是一个合计,因此运行时间与查询执行时间无关。

max_blocks_to_disk bigint 用于写入中间结果的最大磁盘空间量(以 MB 数据块为单位)。在段级别,段跨所有切片使用的最大磁盘空间量。在查询级别,任何查询段使用的最大磁盘空间量。
blocks_to_disk bigint 查询和段用于写入中间结果使用的磁盘空间量(以 MB 数据块为单位)。
step integer 运行的查询步骤。
max_query_scan_size bigint 查询扫描的数据的最大大小(以 MB 为单位)。在段级别,段跨所有切片扫描的数据的最大大小。在查询级别,任何查询段扫描的数据的最大大小。
query_scan_size bigint 查询扫描的数据的大小(以 MB 为单位)。
query_priority integer 查询的优先级。可能的值为 -101234,其中 -1 表示不支持查询优先级。
query_queue_time bigint 查询排队的时间(以微秒为单位)。
service_class_name character(64) 服务类的名称。

示例查询

要查找具有较长的 CPU 时间(1000 秒以上)的查询,请运行以下查询。

Select query, cpu_time / 1000000 as cpu_seconds from stl_query_metrics where segment = -1 and cpu_time > 1000000000 order by cpu_time; query | cpu_seconds ------+------------ 25775 | 9540

要查找具有返回超过一百万个行的嵌套循环联接的活动查询,请运行以下查询。

select query, rows from stl_query_metrics where step_type = 15 and rows > 1000000 order by rows; query | rows ------+----------- 25775 | 2621562702

要查找已运行超过 60 秒且使用的 CPU 时间不到 10 秒的活动查询,请运行以下查询。

select query, run_time/1000000 as run_time_seconds from stl_query_metrics where segment = -1 and run_time > 60000000 and cpu_time < 10000000; query | run_time_seconds ------+----------------- 25775 | 114