我有一个新安装的数据库 (PG 9.4.6 / RHEL 7),它的日志文件增长很快。
大多数条目就像
2016-03-03 10:33:29.259 CET [56868] user@db STATEMENT: SELECT field1 AS a1, field2 AS a2, field3 AS a3, field4 AS a4, field5 AS a5, field6 AS a6, MSISDN AS a7, field8 AS a8, RETRY_COUNT AS a9 FROM table WHERE ((field3 <= $1) AND (field8 IS NULL)) ORDER BY field3 ASC LIMIT $2 OFFSET $3
2016-03-03 10:33:29.259 CET [56868] user@db LOG: EXECUTE MESSAGE STATISTICS
2016-03-03 10:33:29.259 CET [56868] user@db DETAIL: ! system usage stats:
! 0.000006 elapsed 0.000000 user 0.000000 system sec
! [0.526408 user 0.112125 sys total]
! 0/0 [0/0] filesystem blocks in/out
! 0/0 [0/1281] page faults/reclaims, 0 [0] swaps
! 0 [0] signals rcvd, 0/0 [0/0] messages rcvd/sent
! 0/0 [3516/0] voluntary/involuntary context switches
我通读了文档,发现它应该是 log_*_stats 参数之一,尽管 postgresql.conf 和 postgresql.auto.conf 中缺少配置条目
> egrep "log_.*stats" postgresql.*conf
postgresql.conf:#log_parser_stats = off
postgresql.conf:#log_planner_stats = off
postgresql.conf:#log_executor_stats = off
postgresql.conf:#log_statement_stats = off
正在运行的实例显示参数设置为“on”。
> echo "show log_statement_stats" | psql
log_statement_stats
---------------------
on
我试图通过应用“ALTER SYSTEM”来更改它,但它没有帮助。该参数保持“开”。
我还重新加载了数据库(pg_ctl reload)并重新启动它(它是一个起搏器资源,所以pcs 资源重新启动 postgre_db) - 但没有任何反应。
如何关闭此设置?
在 PostgreSQL 中设置配置选项的级别有多个:
postgresql.conf
在或启动命令行中指定的值ALTER DATABASE ... SET {option} ...
从列表 2. 往下看,您要设置的选项越来越少。此外,还有一些只能由超级用户设置 (
log_statement_stats
) 是其中之一。同时,在列表中设置的选项越低,其优先级越高:会话级设置将覆盖所有上级。
具体来说
log_statement_stats
,可以从会话中设置它——但只有超级用户才能做到。如果您的应用程序连接到超级用户角色(实际上并不推荐),它可以将其设置为获得连接后的第一件事。在你的资源中寻找它。更改设置的方法
数字指的是上面列出的级别。
ALTER SYSTEM
- 这会将设置存储在一个postgresql.auto.conf
文件中,除了postgresql.conf
.ALTER DATABASE ... SET ...
或ALTER ROLE ... [IN DATABASE database_name] SET ...
。一些设置也可以在数据库对象(如表、函数等)上设置。SET \[SESSION\] ...
- 更改当前连接的内容(通常称为“会话”)。甚至有一种方法可以在当前事务结束之前更改内容:SET LOCAL ...