HikariCP連線池簡介與yaml配置
阿新 • • 發佈:2020-12-26
HikariCP連線池是高效能的JDBC連線池,官網標註的三大特點:快速、簡單、可靠,效能優於其他連線池。
官網詳細地說明了HikariCP所做的一些優化,總結如下:
- 位元組碼精簡:優化程式碼,直到編譯後的位元組碼最少(展平繼承層次結構,掩飾成員變數,消除強制型別轉換),這樣,CPU快取可以載入更多的程式程式碼;
- 優化代理和攔截器:減少程式碼,例如HikariCP的Statement proxy只有100行程式碼,只有BoneCP的十分之一;
- 自定義陣列型別(FastStatementList)代替ArrayList:避免每次get()呼叫都要進行range check,避免呼叫remove()時的從頭到尾的掃描;
- 自定義無鎖集合型別(ConcurrentBag):提高併發讀寫的效率;
HikariCP的使用
由於SpringBoot2預設整合HikariCP,因此需要再引入依賴。主要是專案mysql和springboot mybatis的依賴。
Yaml配置
# 配置資料來源資訊 spring: datasource: # 資料來源的相關配置 type: com.zaxxer.hikari.HikariDataSource # 資料來源型別:HikariCP driver-class-name: com.mysql.jdbc.Driver # mysql驅動 url: jdbc:mysql://localhost:3306/foodie-dev?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true username: root password: 123456 hikari: connection-timeout: 30000 # 等待連線池分配連線的最大時長(毫秒),超過這個時長還沒可用的連線則發生SQLException, 預設:30秒 minimum-idle: 5 # 最小連線數 maximum-pool-size: 20 # 最大連線數 auto-commit: true # 事務自動提交 idle-timeout: 600000 # 連線超時的最大時長(毫秒),超時則被釋放(retired),預設:10分鐘 pool-name: DateSourceHikariCP # 連線池名字 max-lifetime: 1800000 # 連線的生命時長(毫秒),超時而且沒被使用則被釋放(retired),預設:30分鐘 1800000ms connection-test-query: SELECT 1 # 連線測試語句