log_min_duration_statement 设置被忽略

Fal*_*gel 20 postgresql performance logs postgresql-9.1 postgresql-performance

Postgresql 9.1在 Ubuntu 上运行。确切的 Postgresql 版本是9.1+129ubuntu1如我的包管理器所示。

我有 2 个正在使用的数据库,它们是从远程服务器使用的。

我希望记录执行时间较长的查询。所以我在/etc/postgresql/9.1/main/postgresql.conf文件中设置了以下参数

log_min_duration_statement = 10000
log_statement = 'mod'
Run Code Online (Sandbox Code Playgroud)

所以 Postgresql 会记录耗时超过 10 秒的查询。

但是当我reload配置 postgres 时,Postgresql 开始记录每个符合log_statement值的查询。我将持续时间设置为 100 秒以确保

log_min_duration_statement = 100000
Run Code Online (Sandbox Code Playgroud)

但是 Postgresql 会继续记录每个符合log_statement值的查询,而不管值是多少log_min_duration_statement

设置log_statementnone似乎停止记录。

有什么我错过的配置吗?

Erw*_*ter 25

你很接近。你的最后一个想法实际上是要走的路:

log_statement = none
log_min_duration_statement = 10000
Run Code Online (Sandbox Code Playgroud)

然后不会记录任何语句,除了那些运行时间超过 10 秒的语句 - 包括查询字符串本身。日志记录似乎停止了,因为 10 秒是一个高阈值。我通常使用 2 秒,但 YMMV。

这个关于 SO 的相关答案有更多:
Cannot get log_min_duration_statement to work

  • 让我补充一点,`log_statement` 的默认值是 `none`,因此不设置它或设置为 `none` 具有相同的效果。 (3认同)