连接池通过预创建并复用数据库连接,避免频繁建连的TCP握手、认证等开销,控制最大连接数防止DB过载,并具备健康检查、泄漏检测和监控能力。

连接池就是提前准备好一批数据库连接,放在内存里存着,用的时候直接拿,用完不关,还回去继续用。
解决频繁建连的开销
每次新建 MySQL 连接都要走 TCP 三次握手、身份认证、初始化会话状态,这些操作加起来可能耗时几十毫秒。高并发下反复创建销毁连接,CPU、网络、数据库线程都在空转。连接池把这部分“启动成本”摊到应用启动阶段,后续请求几乎零延迟获取连接。
- 避免重复执行底层网络握手和权限校验
- 绕过 MySQL 每连接分配一个线程的调度开销
- 减少操作系统级文件描述符和内存资源占用
控制资源使用上限
MySQL 默认最大连接数通常是 151(含管理员保留),超出就会拒绝新连接。连接池通过 最大连接数 和 超时排队机制 把数据库负载卡在安全水位内,防止突发流量压垮 DB。
主页面上引用了三个页面也说不过去呀。本次主要是把数据库合并了一下,至于功能,没有加什么新的东西,还是那些:在线订购、帐单查询(添加了一个打印的连接)、特价商品列表、热买商品列表、留言本(许多朋友说以前的那个有问题,现在换成枫叶阁女士留言本,挺不错的)、新闻、完善的管理
- 可设最大活跃连接数(如 20),超出请求排队或快速失败
- 配合最小空闲连接数,保障低峰期也能秒级响应
- 自动剔除长时间未用或失效的连接(如网络断开、MySQL kill 掉的 sleep 连接)
提升应用稳定性和可观测性
连接池不只是“缓存连接”,它还承担连接健康检查、泄漏检测、使用统计等职责。比如 Druid 可记录慢连接、泄露连接堆栈;HikariCP 能在归还时验证连接有效性,避免把坏连接塞回池中继续害人。
- 自动探测并移除不可用连接(通过 validationQuery 或 ping)
- 发现未 close 的连接时可打印警告甚至强制回收
- 暴露活跃/空闲连接数、等待线程数等指标,便于监控告警
说到底,连接池不是银弹,但它把“用数据库”这件事从“每次现烧水”变成了“拧开水龙头就有热水”,省下的不只是时间,更是系统扛压的底气。









