【问题标题】:Postgres: How to disable logging long calls of stored procedures?Postgres:如何禁用记录存储过程的长调用?
【发布时间】: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


【解决方案1】:

setting 这个参数是不可避免的超级用户权限。

如果不是超级用户可以更改此设置,他们可能会运行长时间的“黑客”查询,并且超级用户不会在日志中注意到它。相反,也许您想尝试pg_stat_statements 扩展?...通过查询更容易浏览它...

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    相关资源
    最近更新 更多