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)