SVL_STORED_PROC_CALL - Amazon Redshift

SVL_STORED_PROC_CALL

您可以查询系统视图 SVL_STORED_PROC_CALL 以获取有关存储过程调用的信息,包括开始时间、结束时间以及是否取消调用。每个存储过程调用接受一个查询 ID。

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

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

表列

列名称 数据类型 描述
userid integer 使用其权限来运行语句的用户的 ID。如果此调用嵌套在 SECURITY DEFINER 存储过程中,则这是该存储过程的拥有者的 userid,
session_userid integer 创建会话的用户的 ID,是顶级存储过程调用的调用方。
query integer 过程调用的查询 ID。
label character(320) 用于运行查询的文件的名称或使用 SET QUERY_GROUP 命令定义的标签。如果查询并非基于文件或未设置 QUERY_GROUP 参数,则此字段值为默认值。
xid bigint 事务 ID。
pid integer 进程 ID。通常情况下,会话中的所有查询在同一进程中运行,因此,如果您在同一会话中运行一系列查询,则此值通常保持不变。在特定的内部事件之后,Amazon Redshift 可能会重新启动一个活动会话并分配新的 PID 值。有关更多信息,请参阅 STL_RESTARTED_SESSIONS
数据库 character(32) 在发起查询时用户连接到的数据库的名称。
querytxt character(4000) 过程调用查询的实际文本。
starttime timestamp 查询开始运行的时间(用 UTC 表示),有 6 位数字精度,可精确到小数秒,例如:2009-06-12 11:29:19.131358.
endtime timestamp 查询完成运行的时间(用 UTC 表示),有 6 位数字精度,可精确到小数秒,例如:2009-06-12 11:29:19.131358.
aborted integer 如果存储过程已由系统停止或已由用户取消,则此列包含 1。如果调用运行完成,则此列包含 0。
from_sp_call integer 如果对过程调用的调用是由其他过程调用执行,则此列包含外部调用的查询 ID。否则该字段为 NULL。

示例查询

以下查询按降序顺序返回过去一天中,存储过程调用的用时以及完成状态。

select query, datediff(seconds, starttime, endtime) as elapsed_time, aborted, trim(querytxt) as call from svl_stored_proc_call where starttime >= getdate() - interval '1 day' order by 2 desc; query | elapsed_time | aborted | call --------+--------------+---------+----------------------------------------------------------------------------------- 4166 | 7 | 0 | call search_batch_status(35,'succeeded'); 2433 | 3 | 0 | call test_batch (123456) 1810 | 1 | 0 | call prod_benchmark (123456) 1836 | 1 | 0 | call prod_testing (123456) 1808 | 1 | 0 | call prod_portfolio ('N', 123456) 1816 | 1 | 1 | call prod_portfolio ('Y', 123456)