SVV_QUERY_STATE - Amazon Redshift

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) 查询标签:步骤名称,如 scansort
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)