STV_EXEC_STATE
使用 STV_EXEC_STATE 表可查看有关正在计算节点上主动运行的查询和查询步骤的信息。
此信息通常仅用于排查工程问题。视图 SVV_QUERY_STATE 和 SVL_QUERY_SUMMARY 从 STV_EXEC_STATE 提取其信息。
STV_EXEC_STATE 对所有用户可见。超级用户可以查看所有行;普通用户只能查看其自己的数据。有关更多信息,请参阅 系统表和视图中的数据可见性。
此表中的部分或全部数据也可以在 SYS 监控视图 SYS_QUERY_DETAIL 中找到。SYS 监控视图中的数据经过格式化处理,便于使用和理解。我们建议您使用 SYS 监控视图进行查询。
表列
列名称 | 数据类型 | 描述 |
---|---|---|
userid | integer | 生成条目的用户的 ID。 |
query | integer | 查询 ID。可用于联接各种其他系统表和视图。 |
slice | integer | 步骤完成所在的节点切片。 |
segment | integer | 运行的查询段。查询段是一系列步骤。 |
step | integer | 完成的查询段步骤。步骤是查询执行的最小单元。 |
starttime | timestamp | 步骤运行的时间。 |
currenttime | timestamp | 当前时间。 |
tasknum | integer | 分配到完成步骤的查询任务进程。 |
rows | bigint | 已处理的行数。 |
bytes | bigint | 已处理的字节数。 |
label | char(256) | 由查询步骤名称和适用的表 ID 和表名组成的步骤标签(例如 scan tbl=100448 name =user )。三位表 ID 通常是指临时表的扫描。如果显示 tbl=0 ,则通常是指扫描常量值。 |
is_diskbased | char(1) | 此查询步骤是否已作为基于磁盘的操作完成:true(t )或 false(f )。只有哈希、排序和聚合等特定步骤才能转到磁盘。许多类型的步骤始终在内存中完成。 |
workmem | bigint | 分配给步骤的工作内存的字节数。 |
num_parts | integer | 执行哈希步骤期间将哈希表划分成的分区数。此列中的正数并不表示哈希步骤是作为基于磁盘的操作完成的。请查看 IS_DISKBASED 列中的值以了解哈希步骤是否基于磁盘。 |
is_rrscan | char(1) | 如果为 true (t ),则表示对步骤使用了限制范围的扫描。默认为 false (f )。 |
is_delayed_scan | char(1) | 如果为 true (t ),则表示对步骤使用了延迟扫描。默认为 false (f )。 |
示例查询
Amazon Redshift 建议查询 SVL_QUERY_SUMMARY 或 SVV_QUERY_STATE 以对用户更友好的格式获取 STV_EXEC_STATE 中的信息,而不是直接查询 STV_EXEC_STATE。有关更多详细信息,请参阅 SVL_QUERY_SUMMARY 或 SVV_QUERY_STATE 表文档。