SVL_QLOG - Amazon Redshift

SVL_QLOG

SVL_QLOG 视图包含针对数据库运行的所有查询的日志。

Amazon Redshift 创建 SVL_QLOG 视图作为 STL_QUERY 表中信息的可读子集。使用该表可找出最近运行的查询的查询 ID,或查看完成某项查询用了多长时间。

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

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

表列

列名称 数据类型 描述
userid integer 生成该条目的用户 ID。
query integer 查询 ID。您可以使用此 ID 联接各种其他系统表和视图。
xid bigint 事务 ID。
pid integer 与查询关联的进程 ID。
starttime timestamp 开始执行语句的确切时间,秒的小数部分以 6 位精度表示 – 例如:2009-06-12 11:29:19.131358
endtime timestamp 执行完语句的确切时间,秒的小数部分以 6 位精度表示 – 例如:2009-06-12 11:29:19.193640
elapsed bigint 运行查询花费了多长时间(单位为微秒)。
aborted integer 如果查询已由系统停止或已由用户取消,则此列包含 1。如果查询运行完成,则此列包含 0。因工作负载管理目的取消(随后重新启动)的查询在此列中的值也为 1
label character(320) 用于运行查询的文件的名称或使用 SET QUERY_GROUP 命令定义的标签。如果查询并非基于文件或未设置 QUERY_GROUP 参数,则此字段值为 default
substring character(60) 截断的查询文本。
source_query integer 如果查询使用了结果缓存,则是缓存结果源自的查询的查询 ID。如果未使用结果缓存,则此字段值为 NULL
concurrency_scaling_status_txt text 关于查询运行在主集群还是并发扩展集群上的描述。
from_sp_call integer 如果从存储过程调用了查询,则为过程调用的查询 ID。如果没有在存储过程中运行查询,则此字段为 NULL

示例查询

下面的示例返回 userid = 100 的用户最近运行的五个数据库查询的查询 ID、执行时间和截断的查询文本。

select query, pid, elapsed, substring from svl_qlog where userid = 100 order by starttime desc limit 5; query | pid | elapsed | substring --------+-------+----------+----------------------------------------------- 187752 | 18921 | 18465685 | select query, elapsed, substring from svl_... 204168 | 5117 | 59603 | insert into testtable values (100); 187561 | 17046 | 1003052 | select * from pg_table_def where tablename... 187549 | 17046 | 1108584 | select * from STV_WLM_SERVICE_CLASS_CONFIG 187468 | 17046 | 5670661 | select * from pg_table_def where schemaname... (5 rows)

下面的示例返回已取消的查询 (aborted=1) 的 SQL 脚本名称(LABEL 列)和已用时间:

select query, elapsed, trim(label) querylabel from svl_qlog where aborted=1; query | elapsed | querylabel -------+----------+------------------------- 16 | 6935292 | alltickittablesjoin.sql (1 row)