PostgreSQL 18 中文参考文档(未翻译部分保留英文)🌐 切换到英文原版 →

19.1. 设置参数 #

19.1.1. 参数名称与数值类型
19.1.2. 通过配置文件交互
19.1.3. 通过 SQL 交互
19.1.4. 通过 Shell 命令行与环境变量交互
19.1.5. 查看参数设置

19.1.1. 参数名称与数值类型 #

所有配置参数的名称均大小写不敏感。每个参数的取值归属于以下五种基本类型之一:布尔型、字符串型、整型、浮点型或枚举型(enum)。

  • 布尔型: 可以书写为 on、off、true、false、yes、no、1、0(大小写不敏感)。

  • 字符串型: 通常使用单引号包裹,若字符串内包含单引号需双写单引号转义。对于纯数字或简单标识符,单引号可以省略。

  • 数值型(整型与浮点型): 整型参数支持十进制、十六进制(0x 前缀)与八进制(0o 前缀)输入。支持在数字之间插入下划线进行视觉分组。

  • 带单位的数值型: 表示内存容量或时间长度的数值参数支持显式声明单位。内存单位支持 B、kB、MB、GB 与 TB(换算乘数为 1024)。时间单位支持 us(微秒)、ms(毫秒)、s(秒)、min(分钟)、h(小时)与 d(天)。带单位的值必须作为字符串使用单引号包裹,例如 '128MB'、'15min'。

  • 枚举型: 取值严格限制在一组受限的预定义字符串清单内,取值大小写不敏感。

19.1.2. 通过配置文件交互 #

最基础的配置方式是直接编辑数据目录下的主配置文件 postgresql.conf。每行配置一条参数,格式通常为 name = value,井号(#)代表单行注释。

当主服务进程收到 SIGHUP 信号时,会重新读取配置文件并实现配置热重载(可以通过命令行运行 pg_ctl reload 或在 SQL 中执行 pg_reload_conf() 触发)。主进程会自动将信号级联广播给所有正在活跃运行的子会话,使其平滑应用新配置。某些底层核心参数(标记为必须重启生效的参数)无法通过热重载生效,必须完整重启实例。

此外,数据目录下还存在由系统自动维护的配置文件 postgresql.auto.conf。它用于存放通过 SQL 命令 ALTER SYSTEM 动态修改的配置参数。该文件的优先级严格高于手动编辑的 postgresql.conf。

19.1.3. 通过 SQL 交互 #

除 ALTER SYSTEM 外,还支持以下细粒度配置命令:

  • ALTER DATABASE:为指定数据库绑定专属默认参数。

  • ALTER ROLE:为指定角色用户绑定专属默认参数。

  • SET:在当前会话内部临时修改参数(仅对当前连接有效)。

19.1.4. 通过 Shell 命令行与环境变量交互 #

在启动主服务时,可以通过 postgres 命令的 -c 选项直接传递单次运行配置参数,例如:

postgres -c log_connections=yes -c log_destination='syslog'

环境变量 PGOPTIONS 同样支持由客户端向服务端透传运行时配置选项。

19.1.5. 查看参数设置 #

查看当前会话的生效参数:

SHOW work_mem;
SHOW ALL;

或通过查询系统目录视图 pg_settings 获取各参数的数据类型、当前值、默认值、上下文生效级别(如内部参数、必须重启、仅超级用户可修改、普通用户可修改)以及详细说明。