我的应用程序中的许多逻辑都驻留在存储的plpgsql过程中。因此,单个呼叫可能需要几秒甚至几分钟才能完成。这非常好,但我希望log_min_duration_statement = 250ms
用于所有其他语句来跟踪长查询。是否可以配置Postgres以便根本不记录长存储过程调用?
我想出了为每个使用
调用存储过程的会话手动禁用日志记录SELECT set_config('log_min_duration_statement', '-1', false)
不幸的是,这意味着我的应用程序需要超级用户角色,我想避免使用它。
答案 0 :(得分:0)
set
此参数不可避免地存在超级用户权限。
如果没有超级用户可以更改此设置,则可能会长时间运行"黑客攻击"查询和超级用户不会在日志中注意到它。相反,也许你想通过pg_stat_statements
扩展来试图... ...通过查询来更容易浏览...
你可以select * from pg_stat_statements where query != 'WANTED TO BE AVOIDED'