STL_QUERY
返回有关数据库查询的执行信息。
注意
STL_QUERY 和 STL_QUERYTEXT 视图仅包含有关查询的信息,不包含有关其他实用工具和 DDL 命令的信息。对于有关 Amazon Redshift 运行的所有语句的列表和信息,您还可以查询 STL_DDLTEXT 和 STL_UTILITYTEXT 视图。有关 Amazon Redshift 运行的所有语句的完整列表,您可以查询 SVL_STATEMENTTEXT 视图。
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;