【发布时间】:2016-06-03 07:33:52
【问题描述】:
我的应用程序中的许多逻辑都位于存储的 plpgsql 过程中。因此,单个呼叫可能需要几秒钟甚至几分钟才能完成。这很好,但我想对所有其他语句使用log_min_duration_statement = 250ms 来跟踪长查询。是否可以配置 Postgres,以便根本不记录长存储过程调用?
我想出手动禁用每个调用存储过程的会话的日志记录
SELECT set_config('log_min_duration_statement', '-1', false)
很遗憾,这意味着我的应用程序需要超级用户角色,我想避免使用它。
【问题讨论】:
-
这是不可避免的。如果不是超级用户可以更改此设置,他们可以运行长时间的“黑客”查询,超级用户不会在日志中注意到它。相反,也许您想尝试
pg_stat_statements扩展?...通过查询更容易浏览它... -
我的意思是你可以
select * from pg_stat_statements where query != 'WANTED TO BE AVOIDED' -
好主意!谢谢。
标签: postgresql stored-procedures logging