postgresql.conf 文件包含一些通用设置。
比如内存分配、新建比如内存分配、新建 database 的默认存储位置、PostgreSQL服务器的IP地址、日志的位置等。
如何查看配置:
查询pg_settings系统表:
SELECT name, setting FROM pg_settings where name = 'xxx';
SELECT current_setting(name);
也可以通过 show (show all)命令查看
PostgreSQL 9.4 版本之后,可以使用 ALTER SYSTEM 修改 postgresql.conf 中配置项的值。
例如:
ALTER SYSTEM SET work_mem = '500MB';
该命令不会直接修改postgresql.conf 文件,而是会去修改 postgresql.auto.conf 文件。
如果是不需要重启的参数,reload一次就可以生效:
SELECT pg_reload_conf();
也可以使用pg_ctl命令reload配置,命令如下所示
/opt/pgsql/bin/pg_ctl -D /pgdata/10/data reload
设置和重置Database级别的配置,例如:
ALTER DATABASE name SET configparameter { TO | = } { value | DEFAULT }
ALTER DATABASE name RESET configuration
设置和重置Session级别的配置
1、通过SET命令设置当前Session的配置,例如:
SET configparameter { TO | = } { value | 'value' | DEFAULT }
SET configparameter TO DEFAULT;
2、更新pg_settings视图,例如:
UPDATE `pg_settings` SET setting = new_value WHERE name = 'configparameter';
UPDATE `pg_settings` SET setting = reset_val WHERE name = 'configparameter';
3、使用set_config函数更新会话配置,例如:
SELECT set_config('configparameter', new_value, false);
4、设置和重置Role级别的配置,例如:
ALTER ROLE name IN DATABASE database_name SET configparameter { TO |= } { value | DEFAULT }
ALTER ROLE name IN DATABASE database_name RESET configparameter