轉自:http://bsr1983.iteye.com/blog/2092467
參數 描述
username | 通過JDBC建立一個連接所需的用戶名 |
password | 通過JDBC建立一個連接所需的密碼 |
url | 通過JDBC建立一個連接所需的URL |
driverClassName | 所使用的JDBC驅動的類全名 |
connectionProperties | 連接參數是在建立一個新連接時發送給JDBC驅動的 字符串的格式必須是[參數名=參數值;] 提示:用戶名和密碼屬性是需要明確指出的,所以這兩個參數不需要包含在這里 |
參數 缺省值 描述
defaultAutoCommit | JDBC驅動的缺省值 | 通過這個池創建連接的默認自動提交狀態。如果不設置,則setAutoCommit 方法將不被調用。 |
defaultReadOnly | JDBC驅動的缺省值 | 通過這個池創建連接的默認只讀狀態。如果不設置,則setReadOnly 方法將不被調用。(部分驅動不支持只讀模式,如:Informix) |
defaultTransactionIsolation | JDBC驅動的缺省值 | 通過這個池創建連接的默認事務策略,設置值為下列中的某一個: (參考 javadoc)
|
defaultCatalog | 通過這個池創建連接的默認缺省的catalog | |
cacheState | true | 如果設置為true,池化的連接將在第一次讀或寫,以及隨后的寫的時候緩存當前的只讀狀態和自動提交設置。這樣就省去了對getter的任何進一步的調用時對數據庫的額外查詢。如果直接訪問底層連接,只讀狀態和/或自動提交設置改變緩存值將不會被反映到當前的狀態,在這種情況下,應該將該屬性設置為false以禁用緩存。 |
參數 缺省值 描述
initialSize | 0 | 當這個池被啟動時初始化的創建的連接個數,起始生效版本:1.2 |
maxTotal | 8 | 可以在這個池中同時被分配的有效連接數的最大值,如設置為負數,則不限制 |
maxIdle | 8 | 可以在池中保持空閑的最大連接數,超出設置值之外的空閑連接將被回收,如設置為負數,則不限制 |
minIdle | 0 | 可以在池中保持空閑的最小連接數,超出設置值之外的空閑連接將被創建,如設置為0,則不創建 |
maxWaitMillis | indefinitely | (如果沒有可用連接)池在拋出異常前等待的一個連接被歸還的最大毫秒數,設置為-1則等待時間不確定 |
提示: 如果在高負載的系統中將maxIdle的值設置的很低,則你可能會發現在一個新的連接剛剛被創建的時候就立即被關閉了。這是活躍的線程及時關閉連接要比那些打開連接的線程要快,導致空閑的連接數大於maxIdle。高負載系統中maxIdle的最合適的配置值是多樣的,但是缺省值是一個好的開始點。
參數 缺省值 描述
validationQuery | 在連接池返回連接給調用者前用來進行連接校驗的查詢sql。如果指定,則這個查詢必須是一個至少返回一行數據的SQL SELECT語句。如果沒有指定,則連接將通過調用isValid() 方法進行校驗。 | |
testOnCreate | false | 指明對象在創建后是否需要被校驗,如果對象校驗失敗,則觸發對象創建的租借嘗試將失敗。 |
testOnBorrow | true | 指明在從池中租借對象時是否要進行校驗,如果對象校驗失敗,則對象將從池子釋放,然后我們將嘗試租借另一個 |
testOnReturn | false | 指明在將對象歸還給連接池前是否需要校驗。 |
testWhileIdle | false | 指明對象是否需要通過對象驅逐者進行校驗(如果有的話),假如一個對象校驗失敗,則對象將被從池中釋放。 |
timeBetweenEvictionRunsMillis | -1 | 空閑對象驅逐線程運行時的休眠毫秒數,如果設置為非正數,則不運行空閑對象驅逐線程。 |
numTestsPerEvictionRun | 3 | 在每個空閑對象驅逐線程運行過程中中進行檢查的對象個數。(如果有的話) |
minEvictableIdleTimeMillis | 1000 * 60 * 30 | 符合對象驅逐對象驅逐條件的對象在池中最小空閑毫秒總數(如果有的話) |
softMiniEvictableIdleTimeMillis | -1 | 符合對象驅逐對象驅逐條件的對象在池中最小空閑毫秒總數,額外的條件是池中至少保留有minIdle所指定的個數的連接。當miniEvictableIdleTimeMillis 被設置為一個正數,空閑連接驅逐者首先檢測miniEvictableIdleTimeMillis,當空閑連接被驅逐者訪問時,首先與miniEvictableIdleTimeMillis 所指定的值進行比較(而不考慮當前池中的空閑連接數),然后比較softMinEvictableIdleTimeMillis所指定的連接數,包括minIdle條件。 |
maxConnLifetimeMillis | -1 | 一個連接的最大存活毫秒數。如果超過這個時間,則連接在下次激活、鈍化、校驗時都將會失敗。如果設置為0或小於0的值,則連接的存活時間是無限的。 |
connectionInitSqls | null | 在第一次創建時用來初始化物理連接的SQL語句集合。這些語句只在配置的連接工廠創建連接時被執行一次。 |
lifo | true | 設置為true表明連接池(如果池中有可用的空閑連接時)將返回最后一次使用的租借對象(最后進入)。設置為false則表明池將表現為FIFO隊列——將會按照它們被歸還的順序從空閑連接實例池中獲取連接 |
參數 缺省值 描述
poolPreparedStatements | false | 設置該連接池的預處理語句池是否生效 |
maxOpenPreparedStatements | unlimited | 可以在語句池中同時分配的最大語句數。設置為負數則不限制。 |
這個設置同時作用於預處理語句池. 當一個可用的語句池被創建給每一個連接時,通過以下方法創建的預處理語句將被池化。
- public PreparedStatement prepareStatement(String sql)
- public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency)
提示 -要確保你的連接會留下一些資源給其他語句。池化預處理語句可能會在數據庫中保持他們的游標,可能會引起連接的游標越界,尤其是maxOpenPreparedStatements的值被設置為默認值(無限的),而且一個應用程序可能會為每個連接打開大量不同的預處理語句。為了避免這個問題maxOpenPreparedStatements應該被設置為一個小於連接可以打開的最大游標數的值。
參數 缺省值 描述
accessToUnderlyingConnectionAllowed | false | 控制PoolGuard是否可以訪問底層連接 |
如果允許訪問的話,使用如下代碼結構:
Connection conn = ds.getConnection();
Connection dconn =((DelegatingConnection) conn).getInnermostDelegate();
...
conn.close()
默認值為false,這是一個有着潛在風險的操作,使用不當可能會導致非常嚴重的后果。(在守衛連接已被關閉的情況下,關閉底層連接或者繼續使用它),只有在你需要直接訪問驅動的特有擴展是可以謹慎使用。
NOTE: 除了最原始那個之外,不要關閉底層連接
參數 缺省值 描述
removeAbandoned | false | 標記是否刪除超過removeAbandonedTimout所指定時間的被遺棄的連接。 如果設置為true,則一個連接在超過removeAbandonedTimeout所設定的時間未使用即被認為是應該被拋棄並應該被移除的。創建一個語句,預處理語句,可調用語句或使用它們其中的一個執行查詢(使用執行方法中的某一個)會重新設置其父連接的lastUsed 屬性。 在寫操作較少的應用程序中將該參數設置為true可以將數據庫連接從連接關閉失敗中恢復。 |
removeAbandonedTimeout | 300 | 一個被拋棄連接可以被移除的超時時間,單位為秒 |
logAbandoned | false | 標志是否為應用程序中遺棄語句或連接的代碼開啟日志堆棧追蹤。 因為一個堆棧跟蹤已被創建,被拋棄的語句和連接相關的日志將被覆蓋到打開每個連接或者創建一個Statement時 |
如果你啟用了removeAbandoned,則一個連接被池回收再利用是可能的,因為它被認為是已遺棄 在(getNumIdle() < 2) and (getNumActive() > getMaxTotal() - 3)成立時,這個機制將被觸發。
例如, maxTotal=20 ,這里有18個活躍連接,一個限制連接,將觸發 "removeAbandoned"。但是只有在活動連接超過 "removeAbandonedTimeout" 所指定的秒數內未使用才會被刪除(默認為300秒)。遍歷一個結果集並不被統計為被使用,創建一個語句,預處理語句,可調用語句或使用它們其中的一個執行查詢(使用執行方法中的某一個)會重新設置其父連接的lastUsed 屬性。