Postgresql数据库的参数名称大小写问题-以max_cOnneCtioNs参数举例

本文探讨了PostgreSQL如何处理postgresql.conf文件中的max_connections参数。即使在配置文件中使用了大小写混合的参数名,如'max_cOnneCtioNs',PostgreSQL也会将其转换为全小写形式并应用到pg_settings视图中。这一特性展示了PostgreSQL在配置参数读取上的大小写不敏感性。
[pg104@dbserver pgsqldata]$ pg_ctl start
waiting for server to start....2018-12-20 06:28:52.359 GMT [4317] LOG:  skipping missing configuration file "/pgsqldata/postgresql.auto.conf"
2018-12-20 01:28:52.364 EST [4317] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2018-12-20 01:28:52.365 EST [4317] LOG:  listening on IPv6 address "::", port 5432
2018-12-20 01:28:52.367 EST [4317] LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"
2018-12-20 01:28:52.394 EST [4317] LOG:  redirecting log output to logging collector process
2018-12-20 01:28:52.394 EST [4317] HINT:  Future log output will appear in directory "log".
 done
server started
[pg104@dbserver pgsqldata]$ egrep -i max_connections  postgresql.conf
max_cOnneCtioNs = 173            # (change requires restart) ——>>注意参数名称是大小写混杂的
[pg104@dbserver pgsqldata]$ psql -d postgres
psql (10.4)
Type "help" for help.

postgres=# \x
Expanded display is on.
postgres=# select *  from pg_settings where name ='max_connections';
-[ RECORD 1 ]---+-----------------------------------------------------
name            | max_connections
setting         | 173
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       | 173
sourcefile      | /pgsqldata/postgresql.conf
sourceline      | 65
pending_restart | f

postgres=# select *  from pg_settings where name ='maX_connections';
(0 rows)

postgres=# show max_connections ;
-[ RECORD 1 ]---+----
max_connections | 173

postgres=# 

在postgresql.conf中,我敲入的参数名称是“max_cOnneCtioNs”(此时参数值是173),注意是大小写混杂的字母,

然后pg cluster起来之后,去查询pg_settings视图,发现如下:
1. 参数名称是全小写的max_connections

2.参数值已经变成了173

这说明如下问题:
pg数据库软件读取$PGDATA/postgresql.conf时,对postgresql.conf中的max_cOnneCtioNs参数名称,是转为全小写,然后写入pg_settings视图的。

 

 

<think>好的,用户想了解PostgreSQL配置文件中max_connections参数的含义。首先,我需要回忆一下相关的知识,并结合提供的引用内容来组织答案。 根据引用[4],max_connections参数决定数据库的最大并发连接数,建议值不超过物理内存(GB)乘以50。这点很重要,用户需要知道如何根据服务器配置来调整这个参数。 接下来要注意的是配置文件之间的优先级问题。引用[1]和[2]提到,postgresql.auto.conf会覆盖postgresql.conf中的设置。所以在修改max_connections时,如果postgresql.auto.conf中存在该参数,必须同时修改,否则可能无效。这一点必须强调,避免用户遇到配置不生效的问题。 另外,引用[3]提到某些参数只能在postgresql.conf中设置,但max_connections是否属于这类参数呢?根据已有的信息,可能不需要特别说明这一点,但需要确认。不过根据常见情况,max_connections可以通过ALTER SYSTEM命令修改,这会写入postgresql.auto.conf,所以覆盖问题很重要。 用户可能需要设置步骤,比如如何修改参数、重启服务等,以及注意事项,比如资源消耗。需要分步骤说明,结构清晰。 最后生成相关问题,需要围绕max_connections的影响、优化、配置冲突、监控等展开,确保覆盖用户可能进一步的问题。</think>### PostgreSQLmax_connections参数详解 $max\_connections$参数PostgreSQL数据库的核心配置项,用于控制数据库服务端允许的最大并发客户端连接数。该参数的设置直接影响数据库性能和资源分配。 #### 核心特性 1. **并发控制** 设置公式为:$$max\_connections = N$$ 表示数据库同时接受$N$个客户端连接请求[^4]。例如$max\_connections=300$表示允许300个并发连接。 2. **资源分配** 每个连接会预分配: - 约10MB共享内存 - 独立的后台进程 - 事务状态跟踪资源 建议值:物理内存(GB) × 50 3. **配置优先级** 当同时存在$postgresql.conf$和$postgresql.auto.conf$配置时,后者具有更高优先级[^1][^2]。若修改不生效,需检查两个配置文件。 #### 配置示例 ```conf # postgresql.conf max_connections = 200 # 基准值 ``` ```conf # postgresql.auto.conf max_connections = 300 # 实际生效值 ``` #### 修改步骤 1. 通过SQL修改(生成auto.conf) ```sql ALTER SYSTEM SET max_connections = 250; ``` 2. 直接编辑postgresql.conf 3. 重载配置 ```bash pg_ctl reload -D /var/lib/pgsql/data ``` #### 注意事项 - 超过设定值的连接会收到"too many clients already"错误 - 连接数增加会提升内存消耗,可能引发OOM问题 - 需要配合$work_mem$等参数进行综合调优
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值