一、為什麼需要連接池?
資料庫連線建立開銷大(TCP 握手、認證、分配資源),頻繁開關會嚴重拖慢效能、耗盡資料庫最大連線數。連接池透過「緩衝池」思想,預先建立連線並複用,大幅降低延遲、提升吞吐。
二、什麼是連接池?
位於應用程式與資料庫之間的中介層,管理一組可複用的連線物件,提供「取連線」、「歸還連線」、「配置管理」功能。
三、連接池工作原理 (三階段)
1. 建立階段
- 系統啟動時依配置建立初始連線數 (
initialSize)。
- 連線物件池化管理,避免重複建立/銷毀開銷。
2. 管理階段 (核心策略)
- 客戶請求連線 → 檢查空閒連線 → 有則分配,標記為忙碌。
- 無空閒 → 檢查當前活躍連線數 < 最大連線數 (
maxActive) → 是則新建分配。
- 達上限 → 進入等待隊列,最長等待
maxWait 毫秒。
- 超時仍無連線 → 拋出異常。
- 歸還連線 → 判斷引用計數/存活時間 → 超標則銷毀,否則放回空閒池。
3. 關閉階段
應用關閉時,遍歷池中所有連線逐個關閉,釋放資源,與建立過程相反。
四、主流連接池實現
| 連接池 | 特點 | 推薦場景 |
| HikariCP | 極致效能、輕量、預設 Spring Boot 2.x | 所有新專案首選 |
| Druid | 阿里出品、監控強大、防 SQL 注入 | 國內企業級、需詳細監控 |
| C3P0 | 老牌、Hibernate 歷史預設 | 維護舊專案 |
| DBCP / DBCP2 | Apache Commons、Tomcat 內建 | 簡單 Web 專案 |
五、架構示意圖

核心配置參數速查:
initialSize:初始連線數
minIdle:最小空閒連線
maxActive:最大活躍連線
maxWait:獲取連線最大等待時間 (ms)
validationQuery:驗證連線有效性的 SQL (如 SELECT 1)
testOnBorrow:借用時驗證
testWhileIdle:空閒檢測驗證
- 上一篇文章: SVN「Previous operation has not finished」錯誤徹底解決方案
- 下一篇文章: DateTools 日期時間工具類全解析:週期計算、格式化、偏移、差值、閏年判斷
Copyright ©
程式碼之家 All Rights Reserved