Postgres:如何禁用记录存储过程的长调用?

时间:2016-06-03 07:33:52

标签: postgresql stored-procedures logging

我的应用程序中的许多逻辑都驻留在存储的plpgsql过程中。因此,单个呼叫可能需要几秒甚至几分钟才能完成。这非常好,但我希望log_min_duration_statement = 250ms用于所有其他语句来跟踪长查询。是否可以配置Postgres以便根本不记录长存储过程调用?

我想出了为每个使用

调用存储过程的会话手动禁用日志记录
SELECT set_config('log_min_duration_statement', '-1', false)

不幸的是,这意味着我的应用程序需要超级用户角色,我想避免使用它。

1 个答案:

答案 0 :(得分:0)

set此参数不可避免地存在超级用户权限。

如果没有超级用户可以更改此设置,则可能会长时间运行"黑客攻击"查询和超级用户不会在日志中注意到它。相反,也许你想通过pg_stat_statements扩展来试图... ...通过查询来更容易浏览...

你可以select * from pg_stat_statements where query != 'WANTED TO BE AVOIDED'