一、postgresql数据库参数配置文件介绍
和Oracle一样,pg也有自己专门的参数配置文件:
[postgres@akendb01]$ls -l *.conf
-rw------- 1 postgres postgres 4786 Oct 10 22:54 pg_hba.conf
-rw------- 1 postgres postgres 1636 Aug 26 21:28 pg_ident.conf
-rw------- 1 postgres postgres 137 Oct 4 10:19 postgresql.auto.conf
-rw------- 1 postgres postgres 24030 Aug 27 22:03 postgresql.conf
[postgres@akendb01]$
上面列出了pg主库的配置文件,和实例参数配置相关的是postgresql.conf和postgresql.auto.conf。其中:
1.postgresql.conf和Oracle的pfile一样,可以直接vi修改将具体的参数固化,参数值重启不丢失。
2.postgresql.auto.conf则专门用于记录通过以下命令修改的参数值:
alter system set parametername=p_value
重启不失效,且参数值会覆盖postgresql.conf文件的同名参数值。
3.不建议对postgresql.auto.conf 手工vi编辑修改,有点类似Oracle的spfile文件,但只有alter system命令修改的参数才会记录到该文件。
二、postgresql数据库参数配置
1 .全局参数修改方式修改postgresql.conf。
通过alter system 命令修改全局配置(会保存到postgresql.auto.conf)
启动时设置,不推荐,除非进入单用户模式。
psql -c configparameter=newvalue
2 .全局参数修改示例#修改语法:alter system set parametername=value|default;
#重置语法:alter system reset parametername;
#重置所有参数,生产环境慎用:alter system reset all;
(postgres@[local]:5432)[postgres]#alter system set client_min_messagess=warning;
SET
(postgres@[local]:5432)[postgres]#reset client_min_messagess;
RESET
3.配置database级别的参数#修改语法:alter database dbname set parametername {to|=} {value|'value'|default}
#重置语法:alter database dbname reset parametername
alter database db1 set client_min_messages to warning;
alter database db1 reset client_min_messages;
4. 配置session级别的参数
1)直接set命令方式set parametername {to|=} {value|'value'|default};
reset parametername ;
2)update视图pg_settings方式update pg_settings set setting=new_value where name='parametername';
3)调用set_config()函数方式更新session参数值select set_config(parametername, new_value, is_local);
关于函数中的第三个参数解析:
If is_local is true, the new value will only apply to the current transaction.
If you want the new value to apply for the current session, use false instead.
5.配置user/role级别的参数#设置语法:alter role username [in database dbname] set configparameter {to | =} {value|'value'|default}
#重置语法:alter role username [in database dbname] reset configparameter;
#重置所有参数:--重置某个参数:alter role username [in database dbname] reset all;
6.查看语法帮助
\h alter {system|database|...}.... <<
7.参数生效的几种方式
postgresql的参数分几种生效类型:postmaster:只能重启生效。
sighup:给服务器发送HUP信号即可重新加载postgresql.conf生效。
backend:与sighup类似,不影响已有会话,对新会话生效。
user:单个会话用户在任意时间可以修改,只对当前会话生效。
superuser:只对超级用户如postgres生效,生效不用重新加载配置。
internal:编译期间的设置,只有重新编译才生效。
对于不支持即时生效的参数,可以通过以下方式使新的参数值生效:使用超级用户调用pg_reload_config()函数
使用pg_ctl命令触发SIGHUP信号重新加载配置文件:pg_ctl reload
用UNIX的kill命令手动发起HUP信号:
ps -ef | grep -i postmaster | grep -v grep | xargs kill -HUP
重启DB服务
三、postgresql数据库参数查看
1.方法一:show parametername|all
该方法类似于Oracle的show parameter parameter name。使用 show all查看所有参数值。和Oracle的show parameter直接回车的效果相同。
如下查看指定参数值:show client_min_messages;
2. 方法二:使用pg_settings视图
该方法类似于Oracle的v$parameter,可直接查看当前会话的具体参数值。select name,setting from pg_settings where name='shared_buffers';
————————本文完————————