postgresql.conf
postgresql.conf
是 PostgreSQL 的主配置文件,也是配置参数设置的主要来源。
postgresql.conf
是由 initdb
生成的纯文本文件,通常存储在数据目录中。然而,一些发行版的软件包可能会将 postgresql.conf 放在其他位置,例如 /etc/postgresql
。
参数
每行可以指定一个参数,格式为 name/value;空行将被忽略。井号(#)后面的任何内容都将被视为注释。行中的空格不重要,并且名称和值之间的等号(=)是可选的,前提是它们之间至少有一个空格字符将它们分开。
包含空格的参数必须用单引号括起来。在极少数情况下,参数值中包含单引号时,必须通过使用两个单引号或反斜杠(\')进行转义。
# Comment port = 5432 ssl on shared_buffers = 512MB # very important to get this right! default_transaction_isolation = 'read committed' log_line_prefix = '[\'foo''] ' # this log line prefix will be printed as: "['foo'] "
由 initdb
生成的 postgresql.conf
文件中,大多数有效的参数都被注释掉了,但会显示 initdb
设置的默认值。
包含其他文件
以下指令允许包含其他文件
include
- 包含指定的文件,可以是绝对路径,也可以是相对于当前文件目录的路径。include_if_exists
- 类似于include
,但如果文件不存在,则不会引发错误。include_dir
- 包含指定目录中所有以.conf
结尾的文件,该目录可以指定为绝对路径,也可以是相对于当前文件目录的路径。
修改 postgresql.conf
可以使用任何文本编辑器修改 postgresql.conf
文件;通常,使用配置管理系统是管理此文件及相关文件的明智方式。
还可以使用 SQL 命令 ALTER SYSTEM
(PostgreSQL 9.4 及更高版本)来修改 PostgreSQL 配置。这不会直接修改 postgresql.conf
;相反,更改会写入特殊文件 postgresql.auto.conf
,该文件会覆盖 postgresql.conf
中的设置。
激活更改
postgresql.conf
在服务器启动时读取。在服务器运行时所做的任何更改都不会自动生效;必须发送 SIGHUP
信号,可以通过 pg_ctl reload
来完成,或者执行 SELECT pg_reload_conf()
。某些配置参数需要重启服务器;有关详细信息,请参阅 此页面。
在数据目录外使用 postgresql.conf
请参阅 服务器管理技巧。
示例文件
一个 postgresql.conf
示例文件,其中包含大多数参数的默认值,可在 src/backend/utils/misc/postgresql.conf.sample 中找到。
参考资料
- PostgreSQL 文档: 通过配置文件设置参数
- PostgreSQL 文档: 通过 SQL 进行参数交互