【从Oracle到PG】PostgreSQL参数配置和查看详解

网友投稿 1674 2022-10-03

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

【从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

上一篇:干货篇 | 自动化运维工具-saltstack(中)
下一篇:新增字段的一点一滴技巧
相关文章

 发表评论

暂时没有评论,来抢沙发吧~