调整max_connections至150但活跃连接仍为50,PostgreSQL资源是否增加?
PostgreSQL max_connections 调整对资源分配的影响
PostgreSQL官方文档明确说明:数据库会直接根据max_connections的配置值预分配部分资源,提高这个参数会导致包括共享内存在内的这类资源分配量增加。
针对你描述的场景——当前max_connections设为100,实际活跃连接仅50个,调整至150后活跃连接仍维持50——资源分配增加的情况依然成立。
原因很直接:PostgreSQL里有部分共享内存结构(比如连接相关的固定共享数组、锁表中的预分配空间等)是在数据库启动时就基于max_connections的数值完成初始化的,这类资源的分配只和配置值挂钩,和实际活跃连接数完全无关。哪怕实际只用50个连接,只要max_connections设成150,数据库启动时就会按150的上限预分配对应规模的共享资源,不会因为实际连接少而缩减。
只有另一部分资源(比如每个连接私有的内存、进程资源等)才会随活跃连接数的增加动态分配,这类资源才和实际使用的连接数量相关。
内容的提问来源于stack exchange,提问作者Kevin Meredith
相关产品推荐
相关产品推荐

