# 客户端连接池介绍
本章节面向使用TaurusDB的应用接入场景，提供连接池的通用配置建议。内容不绑定具体连接池实现。
#### 连接池核心作用
连接池是在应用与数据库之间维护一组可复用物理连接的中间层，核心作用为：
- 降低建连开销：复用已建立连接，避免每次请求重新进行TCP握手与鉴权，降低延迟与数据库负载。
- 控制并发与资源占用：以最大连接数约束应用并发，防止突发流量打满数据库连接，保障数据库及其他租户稳定。
- 提升稳定性：连接复用减少建连抖动，配合探活与重连可在主备倒换、网络抖动后自动恢复。
- 统一资源管理：集中管理连接的获取、归还、回收与泄漏检测，降低连接泄漏风险。
 
#### 连接失效场景
物理连接在建立后并非永久可用，以下情况会导致连接在未被感知的情况下失效：
- 数据库主备倒换、实例重启或维护后，原连接指向的端点不再可达；
- 网络中间件（NAT、防火墙、负载均衡）因连接长期空闲而单向中断 TCP 连接；
- 数据库侧主动关闭空闲或超时连接，或网络瞬断导致连接断开。
若连接池未配置探活，业务线程取到的可能是失效连接，首次执行即抛通信异常，且故障呈批量、间歇性，排查困难。
#### 配置原则
各连接池实现的探活与重连默认行为不一致（部分默认空闲检测、部分默认借出检测、部分默认不检测），不能依赖默认值，应在接入时显式配置校验SQL、空闲检测、保活与重连参数，并以所用工具官方文档核对实际行为。
- 探活失效性检测 探活通过校验 SQL 在使用前或周期性检测连接有效性，将失效连接在交付业务前剔除或重建，保证业务获取到的均为可用连接。合理组合为：
  - 以**空闲时检测**作为日常兜底，开销低且不阻塞业务线程；
  
  - 以**保活心跳**维持常驻连接活跃，适配防火墙空闲断连与主备倒换；
  
  - **借出时检测**按场景权衡：高并发生产通常不开启，由空闲检测与保活覆盖。
   
- 重连 探活解决的是单条连接失效问题，当数据库整体不可达时（如倒换窗口、维护），需由重连机制保障恢复。连接池层自动重连在故障期持续重试，恢复后自动恢复连接供给，业务无需重启即自愈；若重连关闭，一次故障即需重启应用，恢复成本显著上升。
  
- 生命周期 探活与重连均属被动应对，生命周期管理从主动预防角度补充：设置最大存活时长防止长连接因会话状态累积、路由变更而退化，按上游空闲断连阈值调整保活心跳间隔。
  
**配置要点**
- **探活**：显式设置校验 SQL（如 SELECT 1）；开启空闲时检测与保活心跳；借出时检测默认不开启，按场景取舍。
- **重连**：保持连接池层自动重连（失败后不中断），URL 不依赖驱动级 autoReconnect。
- **生命周期**：设置最大存活时长；按上游空闲断连阈值调整保活心跳间隔。
 
#### 配置检查
接入连接池时，建议按以下清单逐项确认：
1. 校验 SQL 已设置且为轻量查询；
2. 空闲时检测已开启，回收检测间隔合理；
3. 常驻连接保活心跳已开启，间隔低于上游空闲断连阈值；
4. 最大连接数满足数据库容量约束并预留余量；
5. 连接池层自动重连已启用（失败后不中断），URL 未依赖驱动级 autoReconnect；
6. 最大存活时长已设置，监控统计与慢 SQL 阈值已开启。
 
