数据库修改参数如何生效(详)

首先要知道参数修改后到生效常用手段分为两种情况:

1、修改后重载生效。

可以在shell窗口执行:pg_ctl reload

也可以psql中执行:select pg_reload_conf();

2、修改后重启数据库生效。

参数的生效途径如果需要重启数据库我们可以在参数的配置文件postgresql.conf注释中看到如下提示:

# (change requires restart)


可以通过pg_settings视图查看需要什么样的方式才能生效。

highgo=# select distinct context from pg_settings;
      context      
-------------------
 backend
 user
 internal
 postmaster
 superuser
 sighup
 superuser-backend
(7 rows)

internal:这类参数为只读参数。有的是postgres程序写死的,有些是在安装数据库时intdb时设置好的。

 

postmaster:这类参数需要重启数据库才能生效。

 

sighup:不需要重启数据库,但要向postmaster进程发送sighup信号,即需要pg_ctl reload命令。

 

backend:无需重启数据库,只需向postmaster进程发送sighup信号。但新的配置值只能在之后的新连接中生效,已有连接中这些参数值不会改变。

 

superuser:这类参数可以由超级用户使用set修改。参数设置后只会影响超级用户自身的session配置,不会影响其他用户。

 

user:普通用户使用set设置,这类参数修改后和superuser类参数一样,也是只影响自身session


例如:
highgo=# select distinct context from pg_settings;
      context      
-------------------
 backend
 user
 internal
 postmaster
 superuser
 sighup
 superuser-backend
(7 rows)

highgo=# show fsync;
 fsync 
-------
 on
(1 row)

highgo=# select name,context from pg_settings where name like 'fsync';
 name  | context 
-------+---------
 fsync | sighup
(1 row)

highgo=# alter system set fsync = off;
ALTER SYSTEM
highgo=# show fsync;
 fsync 
-------
 on
(1 row)

highgo=# select pg_reload_conf();
 pg_reload_conf 
----------------
 t
(1 row)

highgo=# show fsync;
 fsync 
-------
 off
(1 row) 


BY  海无涯



你可能感兴趣的:(PostgreSQL,Highgo,DB)