作者:瀚高PG实验室 (Highgo PG Lab)- 天蝎座
我们知道postgresql参数配置是在$PGDATA下的postgresql.conf文件中,当然有时候也会在postgresql.auto.conf文件中,后者优先级更高。
除此以外,在数据库中可以通过视图pg_settings查看。
mydb=# \x
Expanded display is on.
mydb=# select * from pg_settings ;
-[ RECORD 1 ]---+--------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------
name | allow_system_table_mods
setting | off
unit |
category | Developer Options
short_desc | Allows modifications of the structure of system tables.
extra_desc |
context | postmaster
vartype | bool
source | default
min_val |
max_val |
enumvals |
boot_val | off
reset_val | off
sourcefile |
sourceline |
pending_restart | f
--More--
该视图有一列context来标识参数的修改有何限制。
mydb=# select distinct context from pg_settings ;
context
-------------------
backend
user
internal
postmaster
superuser
sighup
superuser-backend
(7 rows)
backend:可以在postgresql.conf中对这些设置进行更改,而无需重新启动服务器。
但新的配置值只会出现在这之后的连接中,在已有的连接中,这些值不会改变。user:该类参数表示,普通用户可以通过set命令来更改参数的配置值。
internal:该类参数是内部参数,也就是说,不可以进行修改,除非重新initdb。
postmaster:该类参数更改配置项后,需要重启PostgreSQL实例才能生效。
superuser:该类参数可以由超级用户来改变,改变时,只会影响到自身的session,不会影响到其他的用户。
sighup:在postgresql.conf配置文件中更改这种类型的参数无须重启实例,只需要向postmaster进程发送一
个SIGHUP信号,让其重新读取配置文件即可。postmaster进程收到信号后,也会向其他子进程发送SIGHUP信号,
让新的参数值在其他子进程中也生效。该类参数区别于backend类参数。superuser-backend:该类参数可以由超级用户来改变,可以在postgresql.conf中对这些设置进行更改,而无需
重新启动服务器。但新的配置值只会出现在这之后的连接中,在已有的连接中,这些值不会改变。