【发布时间】:2021-05-07 13:23:15
【问题描述】:
有什么方法可以找到在 Greenplum 中的函数/过程中运行的语句,例如我们有“pg_stat_activity”来查看在 Greenplum 数据库中运行的查询?
pg_stat_activity 仅显示正在运行/空闲等的语句,但不显示正在运行的函数内部运行的语句。
Greenplum 中是否还有其他包含此信息的视图或表格?
【问题讨论】:
有什么方法可以找到在 Greenplum 中的函数/过程中运行的语句,例如我们有“pg_stat_activity”来查看在 Greenplum 数据库中运行的查询?
pg_stat_activity 仅显示正在运行/空闲等的语句,但不显示正在运行的函数内部运行的语句。
Greenplum 中是否还有其他包含此信息的视图或表格?
【问题讨论】:
不,目前不可见。
命令中心可能会让您深入了解实际的查询处理,但这与函数内部执行的内容并不是直接的 1:1 关系。
【讨论】:
是的,正如 Scherbaum 所说,您无法检查它。唯一的解决方法是在函数中设置动态变量。如下:
CREATE OR REPLACE FUNCION test_func()
AS $$
DECLARE
vStep int;
-- <few other variables>
BEGIN
vStep := 1000
-- <ANY SQL>
RAISE INFO '%: Completed', vStep
vStep := 2000
-- <ANY SQL>
RAISE INFO '%: Completed', vStep
-- and so on
END $$
您可以在您的进度日志中查看它。 上面的代码只是一个伪代码给出一个想法,不会按原样工作。
【讨论】: