DruidDataSource配置兼容DBCP,但個別配置的語意有所區別,
| 配置 | 預設值 | 說明 |
|---|---|---|
| name | 配置這個屬性的意義在于,如果存在多個資料源,監控的時候可以通過名字來區分開來,如果沒有配置,將會生成一個名字,格式是:"DataSource-" + System.identityHashCode(this). 另外配置此屬性至少在1.0.5版本中是不起作用的,強行設定name會出錯,詳情-點此處, | |
| url | 連接資料庫的url,不同資料庫不一樣,例如: mysql : jdbc:mysql://10.20.153.104:3306/druid2 oracle : jdbc:oracle:thin:@10.20.149.85:1521:ocnauto | |
| username | 連接資料庫的用戶名 | |
| password | 連接資料庫的密碼,如果你不希望密碼直接寫在組態檔中,可以使用ConfigFilter,詳細看這里 | |
| driverClassName | 根據url自動識別 | 這一項可配可不配,如果不配置druid會根據url自動識別dbType,然后選擇相應的driverClassName |
| initialSize | 0 | 初始化時建立物理連接的個數,初始化發生在顯示呼叫init方法,或者第一次getConnection時 初始bean時配置init方法 |
| maxActive | 8 | 最大連接池數量 (連接池中最多支持多少個活動會話) |
| maxIdle | 8 | 已經不再使用,配置了也沒效果 |
| minIdle | 最小連接池數量 (回收空閑連接時,將保證至少有minIdle個連接.) |
|
| maxWait | 獲取連接時最大等待時間,單位毫秒,配置了maxWait之后,預設啟用公平鎖,并發效率會有所下降,如果需要可以通過配置useUnfairLock屬性為true使用非公平鎖, (程式向連接池中請求連接時,超過maxWait的值后,認為本次請求失敗,即連接池沒有可用連接,單位毫秒,設定-1時表示無限等待) |
|
| poolPreparedStatements | false | 是否快取preparedStatement,也就是PSCache,PSCache對支持游標的資料庫性能提升巨大,比如說oracle,在mysql下建議關閉, 快取通過以下兩個方法發起的SQL: public PreparedStatement prepareStatement(String sql) public PreparedStatement prepareStatement(String sql,int resultSetType, int resultSetConcurrency) |
| maxPoolPreparedStatementPerConnectionSize | -1 | 要啟用PSCache,必須配置大于0,當大于0時,poolPreparedStatements自動觸發修改為true,在Druid中,不會存在Oracle下PSCache占用記憶體過多的問題,可以把這個數值配置大一些,比如說100 每個連接最多快取多少個SQL |
| validationQuery | 用來檢測連接是否有效的sql,要求是一個查詢陳述句,常用select 'x',如果validationQuery為null,testOnBorrow、testOnReturn、testWhileIdle都不會起作用, 檢查池中的連接是否仍可用的 SQL 陳述句,druid會連接到資料庫執行該SQL, 如果正常回傳,則表示連接可用,否則表示連接不可用 |
|
| validationQueryTimeout | 單位:秒,檢測連接是否有效的超時時間,底層呼叫jdbc Statement物件的void setQueryTimeout(int seconds)方法 | |
| testOnBorrow | false | 申請連接時執行validationQuery檢測連接是否有效,做了這個配置會降低性能, |
| testOnReturn | false | 歸還連接時執行validationQuery檢測連接是否有效,做了這個配置會降低性能, |
| testWhileIdle | true | 建議配置為true,不影響性能,并且保證安全性,申請連接的時候檢測,如果空閑時間大于timeBetweenEvictionRunsMillis,執行validationQuery檢測連接是否有效, |
| keepAlive | false (1.0.28) | 連接池中的minIdle數量以內的連接,空閑時間超過minEvictableIdleTimeMillis,則會執行keepAlive操作, 程式沒有close連接且空閑時長超過 minEvictableIdleTimeMillis,則會執行validationQuery指定的SQL,以保證該程式連接不會池kill掉,其范圍不超過minIdle指定的連接個數, |
| timeBetweenEvictionRunsMillis | 1分鐘(1.0.14) | 有兩個含義: 1) Destroy執行緒會檢測連接的間隔時間,如果連接空閑時間大于等于minEvictableIdleTimeMillis則關閉物理連接, 2) testWhileIdle的判斷依據,詳細看testWhileIdle屬性的說明 檢查空閑連接的頻率,單位毫秒, 非正整數時表示不進行檢查 |
| numTestsPerEvictionRun | 30分鐘(1.0.14) | 不再使用,一個DruidDataSource只支持一個EvictionRun |
| minEvictableIdleTimeMillis | 連接保持空閑而不被驅逐的最小時間,單位毫秒 池中某個連接的空閑時長達到 N 毫秒后, 連接池在下次檢查空閑連接時,將回收該連接,要小于防火墻超時設定net.netfilter.nf_conntrack_tcp_timeout_established的設定 |
|
| maxEvictableIdleTimeMillis | ||
| connectionInitSqls | 物理連接初始化的時候執行的sql | |
| exceptionSorter | 根據dbType自動識別 | 當資料庫拋出一些不可恢復的例外時,拋棄連接 |
| filters | 屬性型別是字串,通過別名的方式配置擴展插件,常用的插件有: 監控統計用的filter:stat 日志用的filter:log4j或者 slf4j 防御sql注入的filter:wall | |
| proxyFilters | 型別是List<com.alibaba.druid.filter.Filter>,如果同時配置了filters和proxyFilters,是組合關系,并非替換關系 | |
| asyncInit | 1.1.4中新增加的配置,如果有initialSize數量較多時,打開會加快應用啟動時間 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/6041.html
標籤:MySQL
上一篇:InnoDB 存盤引擎.
