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