postgresql.conf
postgresql.conf
是 PostgreSQL 的主配置文件,也是配置参数设置的主要来源。
postgresql.conf
是由 initdb
生成的纯文本文件,通常存储在数据目录中。但是,某些发行版的软件包可能会将 postgresql.conf 放置在其他位置,例如 /etc/postgresql
。
参数
每行可以指定一个参数,作为名称/值设置;空行将被忽略。井号 (#) 后面的任何行部分都将被视为注释。行内的空格不重要,名称和值之间的等号 (=) 是可选的,前提是它们之间至少有一个空格字符。
包含空格的参数必须用单引号括起来。在单引号出现在参数值中的罕见情况下,必须使用两个引号或反斜杠 (\') 对其进行转义。
# 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
可以使用任何文本编辑器进行修改;使用配置管理系统通常是管理此文件和相关文件的明智方法。
PostgreSQL 配置也可以使用 SQL 命令 ALTER SYSTEM
进行修改(PostgreSQL 9.4 及更高版本)。这不会直接更改 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 命令交互设置参数