pg_setting详解

示例参数max_connections

select * from pg_settings where name='max_connections';
-[ RECORD 1 ]---+-----------------------------------------------------
name            | max_connections
setting         | 14
unit            |
category        | Connections and Authentication / Connection Settings
short_desc      | Sets the maximum number of concurrent connections.
extra_desc      |
context         | postmaster
vartype         | integer
source          | configuration file
min_val         | 1
max_val         | 262143
enumvals        |
boot_val        | 100
reset_val       | 14
sourcefile      | /data/xxxxxx/postgresql.conf
sourceline      | 696
pending_restart | f

name:参数名称,此处为max_connections
settings:设置的值为14,即最大连接数为14
category:参数的逻辑组,此处为连接类参数,如下可以查看连接验证类参数有哪些

select name from pg_settings where category like '%Connections and Authentication%' and category like '%Connection Settings%';
              name
--------------------------------
 bonjour
 bonjour_name
 listen_addresses
 max_connections
 port
 superuser_reserved_connections
 unix_socket_directories
 unix_socket_group
 unix_socket_permissions
(9 rows)

short_desc:参数简单的解释
extr_desc:附加的参数详细解释
context:记录参数的类型,可以根据该值进行判断参数是否需要重启生效,此处为postmaster,所以需要重启生效

select distinct context from pg_settings ;
      context
-------------------
 postmaster
 superuser-backend
 user
 internal
 backend
 sighup
 superuser

internal:这些参数是只读参数,其中有的参数是postgres写死的,或者使用不同编辑选项确定的,有的参数是初始化时就确定了的,之后就不能再改变该参数值,这类参数不能配置在postgresql.conf文件中,因为这些参数是由postgres程序和在初始化实例时写死的

postmaster:改变这些参数需要重启postgresql实例。改变这类参数需要重启实例才能生效

sighup:可以在配置文件中修改这些值,不需要重启数据库,只需要发送sighup信号,也就是reload一下。postmaster进程收到sighup信号后,也会向他的子进程发送该信号,让新的参数值在所有的进程中都生效

backend:在配置文件中更改这些值无需重启服务器,只需要postmaster 发送一个 SIGHUP 信号,让它重新读取 postgresql.conf 中新的配置值即可,但新的配置值只会出现在这之后的新连接中,在已有的连接中,这些参数的值不会改变。这些参数的值也可以在新连接时,由连接的一些参数改变。

superuser:这类参数可以由超级用户使用 set 来改变。而超级用户改变参数值时,只会影响自身的 session 配置,不会影响其他用户。向 postmaster 进程发送 SIGHUP 信号,也只会影响后续建的连接,不会影响现有的连接。

user:普通用户可使用 set 命令通过此类参数来改变本连接中的配置值。除了普通用户都可以改变外,这类参数与 superuser 类参数没有区别。

superuser-backend:与backend类似,需要超级用户权限

vartype:参数类型,max_connections参数可以看到是整型
source:当前参数的来源值,可以看到是来自postgresql.conf参数文件
min_val:参数允许的最小值,此处为1(对非数字值为空)
max_val:参数允许的最大值,此处为262143(对非数字值为空)
enumvals:一个枚举参数的允许值(对非数字值为空)
boot_val:如果参数没有被别的其他设置,此列为在服务器启动时设定的参数值
reset_val:在当前会话中, RESET 将会设置的参数值
sourcefile:当前值被设置的配置文件(空值表示从非配置文件的其他来源设置,由不是超级用户也不是 pg_read_all_settings 成员的用户检查时也为空值),在配置文件中使用 include 指令时有用
sourceline:当前值被设置的配置文件中的行号(空值表示从非配置文件的其他来源设置,由不是超级用户也不是 pg_read_all_settings 成员的用户检查时也为空值)。
pending_restart:如果配置文件中修改了该值但需要重启,则为 true , 否则为 false

posted @   南大仙  阅读(214)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示