STL_QUERY - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

STL_QUERY

返回有关数据库查询的执行信息。

注意

STL_QUERY 和 STL_QUERYTEXT 视图仅包含有关查询的信息,不包含有关其他实用工具和 DDL 命令的信息。对于有关 Amazon Redshift 运行的所有语句的列表和信息,您还可以查询 STL_DDLTEXT 和 STL_UTILITYTEXT 视图。有关 Amazon Redshift 运行的所有语句的完整列表,您可以查询 SVL_STATEMENTTEXT 视图。

为了管理磁盘空间,STL 日志视图仅保留约 2 到 5 天的日志历史记录,具体取决于日志使用情况和可用磁盘空间。如果需要保留日志数据,则需要定期将数据复制到其他表或将数据卸载到 Amazon S3。

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

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

表列

列名称 数据类型 描述
userid integer 生成该条目的用户 ID。
query integer 查询 ID。查询列可用于连接其他系统表和视图。
label character(320) 用于运行查询的文件的名称或使用 SET QUERY_GROUP 命令定义的标签。如果查询并非基于文件或未设置 QUERY_GROUP 参数,则此字段值为 default
xid bigint 事务 ID。
pid integer 进程 ID。一般情况下,会话中的所有查询在同一进程中运行,因此,如果您在同一会话中运行一系列查询,则此值通常保持不变。在特定的内部事件之后,Amazon Redshift 可能会重新启动一个活动会话并分配新的 PID。有关更多信息,请参阅STL_RESTARTED_SESSIONS
数据库 character(32) 在发起查询时用户连接到的数据库的名称。
querytxt character(4000) 查询的实际查询文本。
starttime 时间戳 查询开始的时间(采用 UTC 表示)。总时间包括排队和执行时间。秒的小数部分以 6 位精度表示。例如:2009-06-12 11:29:19.131358
endtime 时间戳 查询完成的时间(采用 UTC 表示)。总时间包括排队和执行时间。秒的小数部分以 6 位精度表示。例如:2009-06-12 11:29:19.131358
aborted integer 如果查询已由系统停止或已由用户取消,则此列包含 1。如果查询已完成(包括将结果返回到客户端),则此列包含 0。如果客户端在接收结果之前断开连接,则查询将被标记为已取消 (1),即使查询已在后端成功完成也是如此。
insert_pristine integer 当前查询正在运行时,是否可以运行写查询。1 = 不允许写查询。0 = 允许写查询。此列专用在调试中。
concurrency_scaling_status integer

指示查询运行在主集群还是并发扩展集群上。可能值如下所示:

0 - 运行在主集群上

1 - 运行在并发扩展集群上

> 1 - 运行在主集群上

示例查询

以下示例列出最近的 5 个查询。

select query, trim(querytxt) as sqlquery from stl_query order by query desc limit 5; query | sqlquery ------+-------------------------------------------------- 129 | select query, trim(querytxt) from stl_query order by query; 128 | select node from stv_disk_read_speeds; 127 | select system_status from stv_gui_status 126 | select * from systable_topology order by slice 125 | load global dict registry (5 rows)

以下查询按降序返回在 2013 年 2 月 15 日运行的查询所消耗的时间。

select query, datediff(seconds, starttime, endtime), trim(querytxt) as sqlquery from stl_query where starttime >= '2013-02-15 00:00' and endtime < '2013-02-16 00:00' order by date_diff desc; query | date_diff | sqlquery -------+-----------+------------------------------------------- 55 | 119 | padb_fetch_sample: select count(*) from category 121 | 9 | select * from svl_query_summary; 181 | 6 | select * from svl_query_summary where query in(179,178); 172 | 5 | select * from svl_query_summary where query=148; ... (189 rows)

以下查询显示查询的队列时间和执行时间。concurrency_scaling_status = 1 的查询运行在并发扩展集群上。所有其他查询都运行在主集群上。

SELECT w.service_class AS queue , q.concurrency_scaling_status , COUNT( * ) AS queries , SUM( q.aborted ) AS aborted , SUM( ROUND( total_queue_time::NUMERIC / 1000000,2 ) ) AS queue_secs , SUM( ROUND( total_exec_time::NUMERIC / 1000000,2 ) ) AS exec_secs FROM stl_query q JOIN stl_wlm_query w USING (userid,query) WHERE q.userid > 1 AND service_class > 5 AND q.starttime > '2019-03-01 16:38:00' AND q.endtime < '2019-03-01 17:40:00' GROUP BY 1,2 ORDER BY 1,2;