AIOps 一场颠覆传统运维的盛筵
1674
2022-10-03
【从Oracle到PG】PostgreSQL参数配置和查看详解
一、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 parameternamealter 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';
欢迎投稿
中国开源软件推进联盟PostgreSQL分会,欢迎大家积极投稿,向PGer分享自己的实践经验、心得体会,共建PG中国生态。投稿邮箱:partner@postgresqlchina.com
发表评论
暂时没有评论,来抢沙发吧~