PostgreSQL14执行ALTER SYSTEM改配置后pg_reload_conf不生效问题
PostgreSQL修改max_connections后pg_reload_conf不生效原因说明
这是PostgreSQL的原生参数生效规则限制,和PostgreSQL 14版本升级没有关联:
- PostgreSQL的配置参数按生效要求分为多个级别,
max_connections属于postmaster级参数,这类参数修改后必须重启数据库服务才能生效。pg_reload_conf()仅对sighup级、user级的参数生效,无法重载postmaster级参数。 - 你可以执行以下SQL查询任意参数的生效要求:
SELECT name, context FROM pg_settings WHERE name = 'max_connections';
返回结果中context字段的不同取值对应不同生效规则:
postmaster:需要重启数据库主进程才能生效sighup:执行pg_reload_conf()即可重载生效,无需重启user:可直接在当前会话级别动态修改,无需执行重载操作
你描述的所有操作现象都符合预期逻辑:
- 执行
ALTER SYSTEM SET max_connections = '301'后,配置已正常写入postgresql.auto.conf,操作无异常 SELECT pg_reload_conf()返回t仅代表重载命令执行成功,不代表所有修改的参数都已经生效- 重启服务后配置正常生效,完全符合
postmaster级参数的生效规则
你之前修改配置无需重启即可生效的场景,应为修改了sighup级的可重载参数,并非max_connections这类需要重启的参数。
内容的提问来源于stack exchange,提问作者drmrbrewer
相关产品推荐
相关产品推荐

