無論用什麼資料庫連線池,在配置資料庫的時候還需要配置一大堆連線池引數,在hikari的原始碼中也有很多的設定引數,那麼每乙個引數的實際意義是什麼提前學習一下很有必要。我之前都是按照網上或者是其他專案的配置檔案複製一下直接拿來用,也沒有真正思考過這些引數代表的實際意義。所以寫乙個學習筆記,如有問題請幫忙指出,謝謝。
url、driver-class-name、username、password這四個值是最常見的需要配置的引數,也是使用jdbc時至少需要配置的引數。
url
url就是資料庫的訪問位址,不同的資料庫訪問位址格式也是不一樣。
//mysql,埠預設3306
jdbc:mysql://machine_ip:port/dbname
//sqlserver,埠預設1433
jdbc:microsoft:sqlserver://<:port>;databasename=//oracle,預設埠1521
jdbc:oracle:thin:@machine_ip:port:dbname
driver-class-name
資料庫驅動類,已經有了jdbc的規範,但是每乙個資料庫廠家的具體實現是不一樣的,所以需要他們提供的驅動類來真正使用資料庫
//mysql5
com.mysql.jdbc.driver
//mysql6 ps:如果6中使用5的驅動,會丟擲異常
com.mysql.cj.jdbc.driver
//sqlserver
com.microsoft.jdbc.sqlserver.sqlserverdriver
//oracle
oracle.jdbc.oracledriver
username、password
這是連線資料庫的賬號和密碼
引數描述
預設值autocommit
是否自動提交事務
true
connectiontimeout
連線超時時間(毫秒)
如果在沒有連線可用的情況下等待超過此時間,則丟擲 sqlexception
最小值為250毫秒
30000(30秒)
idletimeout
空閒超時時間(毫秒)
只有在minimumidle < maximumpoolsize時生效,超時的連線可能被**
數值 0 表示空閒連線永不從池中刪除
原始碼中0的時候超時時間為integer的最大值,即2^31-1
最小值10000毫秒(10秒)
600000(10分鐘)
maxlifetime
連線池中的連線的最長生命週期(毫秒)
數值 0 表示不限制
hikaricp 強烈建議我們設定此值,並且比資料庫設定的連線時間的值小幾秒鐘
1800000(30分鐘)
connectiontestquery
連線池每分配一條連線前執行的查詢語句(如:select 1),以驗證該連線是否是有效的
如果你的驅動程式支援 jdbc4,hikaricp 強烈建議我們不要設定此屬性
-minimumidle
最小空閒連線數
hikaricp 建議我們不要設定此值,而是充當固定大小的連線池
與maximumpoolsize數值相同
maximumpoolsize
連線池中可同時連線的最大連線數
當池中沒有空閒連線可用時,就會阻塞直到超出connectiontimeout設定的數值
10metricregistry
此屬性只能通過程式設計或者ioc容器獲取
此屬性允許您指定池使用的codahale / dropwizard metricregistry的例項來記錄各種度量標準
-healthcheckregistry
此屬性只能通過程式設計或者ioc容器獲取
此屬性允許您指定池使用的codahale / dropwizard healthcheckregistry的例項來報告當前的健康資訊
-poolname
連線池名稱,主要用於顯示在日誌記錄和 jmx 管理控制台中
自動生成
資料庫連線池Hikaricp原始碼分析
hikaricp總結 借助哪些技術使效能超越其他執行緒池的?為了效能,自定義資料結構 fastlist concurrentbag 主要就是concurrentbag使用threadlocal sharelist 等待queue 對獲取connnection做了優化。定時器相關的使用 schedul...
資料庫連線池數如何配置與HikariCP
hikaricp連線池是高效能的jdbc連線池,官網標註的三大特點 快速 簡單 可靠,效能優於其他連線池。官網詳細地說明了hikaricp所做的一些優化,總結如下 優化 和 減少 例如hikaricp的statement proxy只有100行 只有bonecp的十分之一 自定義陣列型別 fasts...
資料庫連線池 Redis連線池
基本原理 在內部物件池中,維護一定數量的資料庫連線,並對外暴露資料庫連線的獲取和返回方法。如外部使用者可通過getconnection方法獲取資料庫連線,使用完畢後再通過releaseconnection方法將連線返回,注意此時的連線並沒有關閉,而是由連線池管理器 並為下一次使用做好準備。2.作用 ...