SVV_QUERY_STATE
使用 SVV_QUERY_STATE 查看有关当前正在运行的查询的运行时信息。
SVV_QUERY_STATE 视图包含 STV_EXEC_STATE 表的数据子集。
SVV_QUERY_STATE 对所有用户可见。超级用户可以查看所有行;普通用户只能查看其自己的数据。有关更多信息,请参阅 系统表和视图中的数据可见性。
此表中的部分或全部数据也可以在 SYS 监控视图 SYS_QUERY_DETAIL 中找到。SYS 监控视图中的数据经过格式化处理,便于使用和理解。我们建议您使用 SYS 监控视图进行查询。
注意
此视图仅在查询预置集群时可用。
表列
列名称 | 数据类型 | 描述 |
---|---|---|
userid | integer | 生成条目的用户的 ID。 |
query | integer | 查询 ID。可用于联接各种其他系统表和视图。 |
seg | 整数 | 正在运行的查询段编号。一个查询包含多个区段,而且每个区段包含一个或多个步骤。查询段可并行运行。每个段在一个进程中运行。 |
step | 整数 | 正在运行的查询步骤编号。步骤是最小的查询运行时单位。每个步骤代表独立的工作单位,如扫描表、返回结果或排序数据。 |
maxtime | interval | 供此步骤运行的最大时长(单位为微秒)。 |
avgtime | interval | 供此步骤运行的平均时长(单位为微秒)。 |
rows | bigint | 正在运行的步骤产生的行数。 |
bytes | bigint | 正在运行的步骤产生的字节数。 |
cpu | bigint | 供内部使用。 |
memory | bigint | 供内部使用。 |
rate_row | double precision | 查询开始以来的每秒行数速率,计算方法为:汇总行数,然后除以从开始查询以来到当前时间的秒数。 |
rate_byte | double precision | 查询开始以来的每秒字节速率,计算方法为:汇总字节数,然后除以从开始查询以来到当前时间的秒数。 |
label | character(25) | 查询标签:步骤名称,如 scan 或 sort 。 |
is_diskbased | character(1) | 此查询步骤是否作为基于磁盘的操作运行:true (t ) 或 false (f )。只有哈希、排序和聚合等特定步骤才能转到磁盘。许多类型的步骤始终在内存中执行。 |
workmem | bigint | 分配到查询步骤的工作内存量(单位为字节)。 |
num_parts | integer | 执行哈希步骤期间将哈希表划分成的分区数。此列中的正数并不表示哈希步骤是作为基于磁盘的操作运行的。请查看 IS_DISKBASED 列中的值以了解哈希步骤是否基于磁盘。 |
is_rrscan | character(1) | 如果为 true (t ),则表示对步骤使用了限制范围的扫描。默认为 false (f )。 |
is_delayed_scan | character(1) | 如果为 true (t ),则表示对步骤使用了延迟扫描。默认为 false (f )。 |
示例查询
按步骤确定查询的处理时间
下面的查询显示查询 ID 为 279 的查询每一步的运行时长以及 Amazon Redshift 处理的数据行数:
select query, seg, step, maxtime, avgtime, rows, label from svv_query_state where query = 279 order by query, seg, step;
此查询检索有关查询 279 的处理信息,如下面的示例输出所示:
query | seg | step | maxtime | avgtime | rows | label ------+---------+------+---------+---------+---------+------------------- 279 | 3 | 0 | 1658054 | 1645711 | 1405360 | scan 279 | 3 | 1 | 1658072 | 1645809 | 0 | project 279 | 3 | 2 | 1658074 | 1645812 | 1405434 | insert 279 | 3 | 3 | 1658080 | 1645816 | 1405437 | distribute 279 | 4 | 0 | 1677443 | 1666189 | 1268431 | scan 279 | 4 | 1 | 1677446 | 1666192 | 1268434 | insert 279 | 4 | 2 | 1677451 | 1666195 | 0 | aggr (7 rows)
确定当前是否在磁盘上运行任何事件查询
下面的查询显示磁盘上有没有任何当前正在运行的活动查询:
select query, label, is_diskbased from svv_query_state where is_diskbased = 't';
此示例输出显示磁盘上当前正在运行的任何活动查询:
query | label | is_diskbased -------+--------------+-------------- 1025 | hash tbl=142 | t (1 row)