postgresql.conf与postgresql.auto.conf区别

1. 简介

PostgreSQL 9.4版本开始引入postgresql.auto.conf 配置文件,作为postgresql.conf文件的补充,在配置文件格式上,它和postgresql.conf保持一致

1.1 postgresql.conf

这是一个静态的参数文件,包含了数据库服务器的基本配置信息。

该文件中的配置参数可以直接在文本编辑器中修改,并且这些修改会立即生效,无需重启数据库服务器。

一些常见的配置选项包括监听地址 (listen_addresses)、日志级别 (log_level)、备份相关设置 (archive_command, archive_cleanup_command) 等。

1.2 postgresql.auto.conf

1.2.1 创建原理

对于postgresql.conf、postgresql.auto.conf两个配置文件,他们均位于src/bin/initdb/initdb.c文件中的setup_config()函数内部完成。首先创建postres.conf文件,创建成功之后,再创建postgresql.auto.conf文件。

这是一个动态的参数文件,其内容在数据库运行过程中由 PostgreSQL 自动生成和修改。

该文件主要用于存储那些在postgresql.conf 中没有显式设置,但数据库运行时又需要的参数。

postgresql.auto.conf 文件的优先级高于 postgresql.conf,即如果两个文件中存在相同的配置项,系统会优先使用 postgresql.auto.conf 中的值。

由于 postgresql.auto.conf 的内容是动态生成的,因此不能直接使用文本编辑器修改,而必须通过 ALTER SYSTEM 命令在 psql 中进行修改。

2. 差异

2.1 文件默认内容不同

postgresql.conf文件创建成功之后,里面有PostgreSQL依赖的默认配置文件参数,比如"最大连接数、共享缓存区、时区等等"

config 复制代码
max_connections = 100
shared_buffers = 128MB	
temp_buffers = 8MB	

postgresql.auto.conf 配置文件,一开始除了两行文本注释说明之外,没有其他配置参数

config 复制代码
# Do not edit this file manually!
# It will be overwritten by the ALTER SYSTEM command.
authentication_timeout = '80'
default_transaction_isolation = 'repeatable read'

2.2 文件修改方式不同

postgresql.auto.conf配置文件中初始化时的文本字符串提示一样:

不要手动修改该文件,它会被ALTER SYSTEM 命令给覆盖

该文件主要存储ALTER SYSTEM 命令设置的参数值。

2.2.1 ALTER SYSTEM 语句

ALTER SYSTEM语句是PG库的一个扩展,它用于在PostgreSQL数据库集群中修改服务器的配置参数。然后修改后的参数将保存在postgresql.auto.conf配置文件中。

ALTER SYSTEM的使用格式如下:

sql 复制代码
ALTER SYSTEM SET configuration_parameter {TO|=} {value|'value'|default}
ALTER SYSTEM RESET configuration_parameter
ALTER SYSTEM RESET ALL

覆盖参数值,postgresql.conf参数值不变。因为postgresql.auto.conf 文件的优先级高于 postgresql.conf

2.2.2 实验
sql 复制代码
template1=# show port;
 port
------
 5432
(1 行记录)

template1=# alter system set port=5435;
ALTER SYSTEM

postgresql.auto.conf

新增一条记录

config 复制代码
port = 5435
sql 复制代码
template1=# show port;
 port
------
 5432
(1 行记录)


template1=# select pg_reload_conf();
 pg_reload_conf
----------------
 t
(1 行记录)

template1=# show port;
 port
------
 5432
(1 行记录)


template1=# alter system reset port;
ALTER SYSTEM

postgresql.auto.conf 清除port记录

相关推荐
Bioinfo Guy2 小时前
高分Panel复现系列|转录因子网络太乱?用模块框把重点圈出来
数据库·生物信息学·生信可视化
ltl3 小时前
Disaggregated DB 合集:Socrates、PolarDB、Taurus 的共同模式
数据库
Blossom i5 小时前
大数据预处理与采集实验一:使用Python操作MySQL数据库
数据库·mysql
雾时之林6 小时前
Linux--软件管理、源码包安装
linux·服务器·数据库
老纪的技术唠嗑局7 小时前
超级干货分享:中小企业使用 OceanBase 实践经验汇总
数据库
CLOUD ACE8 小时前
谷歌云代理|零售商Target 如何利用 Spanner Graph 提升零售发现体验并将数据库维护成本降低 50%
数据库·零售
AI大模型-小雄8 小时前
Codex写分页接口为什么越翻越慢?用Cursor Pagination解决重复与漏数据
大数据·数据库·elasticsearch·搜索引擎·chatgpt·后端开发·codex
少晓年8 小时前
从 MySQL 迁移到人大金仓 KingbaseES:完整指南与实践
数据库·mysql
SelectDB9 小时前
Apache Doris AI RAG 实战:从基础 RAG 到知识图谱增强的技术能力与选型
数据库
SelectDB9 小时前
电商企业 PostgreSQL 迁移 Apache Doris:80TB 分析数据统一平台技术能力与实践
数据库