數據庫連接池在初始化的時候會創建initialSize個連接,當有數據庫操作時,會從池中取出一個連接。如果當前池中正在使用的連接數等于maxActive,則會等待一段時間,等待其他操作釋放掉某一個連接,如果這個等待時間超過了maxWait,則會報錯;如果當前正在使用的連接數沒有達到maxActive,則判斷當前是否空閑連接,如果有則直接使用空閑連接,如果沒有則新建立一個連接。在連接使用完畢后,不是將其物理連接關閉,而是將其放入池中等待其他操作復用。
對于一個數據庫連接池,一般包括一下屬性。
名稱 說明 備注
minIdle 最小活躍數 可以允許的空閑連接數目
maxActive 最大連接數 相當于池的大小
initialSize 初始化連接大小
maxWait 獲取連接的最大等待時間
timeBetweenEvictionRunsMillis 空閑連接的最大生存時間 指定空閑連接在空閑多長時間后,關閉其物理連接
testWhileIdle 是否在空閑時檢測連接可用性 由于網絡或者數據庫配置的原因(比如mysql連接的8小時限制),開啟這個開關可以定期檢測連接的可用性