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 # 連接測試語句