设置数据库参数最基本的方法是编辑postgresql.conf文件,该配置文件默认在节点数据目录下。
配置文件中每一行指定一个参数。名称和值之间的等号是可选的。空白是无意义的(除了在一个引号引用的参数值内)并且空行被忽略。井号(#)指示该行的剩余部分是一个注释。非简单标识符或者数字的参数值必须用单引号包围。要在参数值里嵌入单引号,要么写两个单引号(首选)或者在引号前放反斜线。
以这种方式设定的参数为实例提供了默认值。除非这些设置被覆盖,活动会话看到的就是这些设置。下面的小节描述了管理员或用户覆盖这些默认值的方法。
主服务器进程每次收到SIGHUP信号(最简单的方法是从命令行运行pg_ctl reload或调用 SQL函数pg_reload_conf()来发送这个信号)后都会重新读取这个配置文件。主服务器进程还会把这个信号传播给所有正在运行的服务器进程,这样现有的会话也能采用新值(要等待它们完成当前正在执行的客户端命令之后才会发生)。另外,你可以直接向一个单一服务 器进程发送该信号。有些参数只能在服务器启动时设置,在配置文件中对这些条目的修改将被忽略,直到下次服务器重启。配置文件中的非法参数设置也会在SIGHUP处理过程中被忽略(但是会记录日志)。
除postgresql.conf之外,数据目录还包含一个文件postgresql.auto.conf,它具有和postgresql.conf相同的格式。这个文件保存了通过ALTER SYSTEM命令修改的参数设置。每当postgresql.conf被读取时这个文件会被自动读取,并且它的设置会以同样的方式生效。postgresql.auto.conf中的设置会覆盖postgresql.conf 中的设置。
如果SIGHUP信号没有产生预期效果,那么系统表pg_file_settings 有助于对配置文件的预测试更改,或者诊断问题。