1. 程式人生 > 實用技巧 >HikariCP連線池簡介與yaml配置

HikariCP連線池簡介與yaml配置

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

參考資料