重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛

标题: PostgreSQL 中 pg_settings 与 pg_file_settings 的区别 [打印本页]

作者: ZhangQi    时间: 2025-10-12 13:54
标题: PostgreSQL 中 pg_settings 与 pg_file_settings 的区别
在日常运维中,经常需要确认参数到底是不是已经生效,这时候 pg_settings 和 pg_file_settings 是两个容易混淆的视图

1. pg_settings

- 展示的是 当前实例实际生效的参数值。
- 这些值可能来自:默认值、postgresql.conf、ALTER SYSTEM、或者 SET 动态修改。
- 可以理解为 现在数据库里正在用的配置。

2. pg_file_settings

- 展示的是 配置文件里写的参数内容(通常是 postgresql.conf)。
- 字段 applied 表示该参数是否被实例成功应用。
- 如果是 applied=f,并伴随 error: setting could not be applied,一般是因为:该参数需要 重启数据库 才能生效(如 archive_mode、shared_preload_libraries),或者参数写错、路径错误等。

3. 如何理解

- 看实时生效情况 → 查 pg_settings
- 看配置文件写了什么、是否应用成功 → 查 pg_file_settings
- 如果配置改了但没生效,可以通过 applied=f 快速发现。

4. 常见场景举例

开启 pg_stat_statements 时,在 postgresql.conf 里加上:shared_preload_libraries = 'pg_stat_statements',在 pg_file_settings 里会看到 applied=f,提示需要重启,如下图所示

8485868df56abd3c6d.png
登录/注册后可看大图