数据库连接池通过预创建、复用和回收机制提升性能:启动时按minimumidle创建连接,业务取用免初始化;close()为逻辑归还而非物理关闭;支持动态伸缩与闲置清理,并需合理配置参数以匹配负载。

数据库连接池通过“预创建 + 复用 + 回收”机制,从根本上避免频繁创建和销毁连接。
提前初始化一批连接
应用启动时,连接池按配置的最小连接数(minimumIdle)主动创建并维护一批可用连接,放入池中待命。这些连接已完成了 TCP 三次握手、SSL 协商、认证授权等耗时步骤,后续业务直接取用,跳过全部初始化流程。
用完不关闭,而是归还给池
业务代码调用 connection.close() 时,实际并非物理断开,而是通知连接池该连接可再次使用。连接保持活跃状态,返回池中等待下一次分配。这个“假关闭”是连接复用的关键动作。
动态伸缩,按需供给
当请求到来:
- 池中有空闲连接 → 直接分配,毫秒级响应
- 无空闲但未达最大连接数(maximumPoolSize)→ 新建一个连接加入池再分配
- 已达上限 → 进入等待队列;超时未获取到则抛异常,不无限创建
自动清理闲置连接
连接长时间未被使用(超过 idleTimeout,如 10 分钟),连接池会主动关闭它,防止僵尸连接堆积。但池中始终维持至少 minimumIdle 个连接,确保基础服务能力不降级。
不复杂但容易忽略:关键不在“有没有池”,而在参数是否贴合真实负载——比如最大连接数设太高,压垮数据库;设太低,大量线程卡在等待连接上。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











