暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

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


                            欢迎投稿



                                    中国开源软件推进联盟PostgreSQL分会,欢迎大家积极投稿,向PGer分享自己的实践经验、心得体会,共建PG中国生态。

                            投稿邮箱:

                            partner@postgresqlchina.com


                            文章转载自开源软件联盟PostgreSQL分会,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                            评论