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

SVV_QUERY_STATE

使用 SVV_QUERY_STATE 查看有关当前正在运行的查询的执行信息。

SVV_QUERY_STATE 视图包含 STV_EXEC_STATE 表的数据子集。

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

表列

列名称 数据类型 描述
userid integer 生成条目的用户的 ID。
query integer 查询 ID。可用于联接各种其他系统表和视图。
seg integer 正在执行的查询段的编号。一个查询包含多个区段,而且每个区段包含一个或多个步骤。查询段可并行运行。每个段在一个进程中运行。
step integer 正在执行的查询步骤的编号。步骤是最小的查询执行单元。每个步骤代表独立的工作单位,如扫描表、返回结果或排序数据。
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 处理的数据行数:

Copy
select query, seg, step, maxtime, avgtime, rows, label from svv_query_state where query = 279 order by query, seg, step;

此查询检索有关查询 279 的处理信息,如下面的示例输出所示:

Copy
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)

确定磁盘上有没有任何当前正在运行的活动查询

下面的查询显示磁盘上有没有任何当前正在运行的活动查询:

Copy
select query, label, is_diskbased from svv_query_state where is_diskbased = 't';

此示例输出显示磁盘上当前正在运行的任何活动查询:

Copy
query | label | is_diskbased -------+--------------+-------------- 1025 | hash tbl=142 | t (1 row)

本页内容: