概述
HikariCP是Spring Framework 5.0的默認 數據庫連接池,這得益於他的高性能。但是如果配置不當,數據庫連接池也可能因影響到系統性能。
重要參數
maximum-pool-size
minimum-idle
pool-name
auto-commit
idle-timeout
max-lifetime
connection-timeout
初始化過程和連接創建邏輯
當HikariCP初始化時候,會將添加連接到池中,直到達到minimum-idle的數量,此時保持這個狀態。當有新的連接池請求時,HikariCP會返回一個connection的代理。當connection都處於使用狀態時,若此時有新的連接池請求,HikariCP就會繼續新建connection直到達到maximun-pool-size。
maximum-pool-size
池中最大連接數(包括空閑和正在使用的連接)。默認值是10,這個一般預估應用的最大連接數,后期根據監測得到一個最大值的一個平均值。要知道,最大連接並不是越多越好,一個connection會占用系統的帶寬和存儲。但是 當連接池沒有空閑連接並且已經到達最大值,新來的連接池請求(HikariPool#getConnection)會被阻塞直到connectionTimeout(毫秒),超時后便拋出SQLException。
minimum-idle
池中最小空閑連接數量。默認值10,小於池中最大連接數,一般根據系統大部分情況下的數據庫連接情況取一個平均值。Hikari會盡可能、盡快地將空閑連接數維持在這個數量上。如果為了獲得最佳性能和對峰值需求的響應能力,我們也不妨讓他和最大連接數保持一致,使得HikariCP成為一個固定大小的數據庫連接池。
pool-name
連接池的名字。一般會出現在日志和JMX控制台中。默認值:auto-genenrated。建議取一個合適的名字,便於監控。
auto-commit
是否自動提交池中返回的連接。默認值為true。一般是有必要自動提交上一個連接中的事物的。如果為false,那么就需要應用層手動提交事物。
idle-timeout
空閑時間。僅在minimum-idle小於maximum-poop-size的時候才會起作用。默認值10分鍾。根據應用實際情況做調整,對於一些間歇性流量達到峰值的應用,一般需要考慮設置的比間歇時間更大,防止創建數據庫連接拖慢了應用速度。
max-lifetime
連接池中連接的最大生命周期。當連接一致處於閑置狀態時,數據庫可能會主動斷開連接。為了防止大量的同一時間處於空閑連接因為數據庫方的閑置超時策略斷開連接(可以理解為連接雪崩),一般將這個值設置的比數據庫的“閑置超時時間”小幾秒,以便這些連接斷開后,HikariCP能迅速的創建新一輪的連接。
connection-timeout
連接超時時間。默認值為30s,可以接收的最小超時時間為250ms。但是連接池請求也可以自定義超時時間(com.zaxxer.hikari.pool.HikariPool#getConnection(long))。
# # 配置數據源相關 使用 HikariCP 數據源 # ############################################################ # 等待連接池分配連接的最大時長(毫秒),超過這個時長還沒可用的連接則發生SQLException, 默認:30秒 spring.datasource.hikari.connection-timeout=30000 # 最小連接數 spring.datasource.hikari.minimum-idle=5 # 最大連接數 spring.datasource.hikari.maximum-pool-size=15 # 自動提交 spring.datasource.hikari.auto-commit=true # 一個連接idle狀態的最大時長(毫秒),超時則被釋放(retired),默認:10分鍾 spring.datasource.hikari.idle-timeout=600000 # 連接池名字 spring.datasource.hikari.pool-name=DatebookHikariCP # 一個連接的生命時長(毫秒),超時而且沒被使用則被釋放(retired),默認:30分鍾 1800000ms,建議設置比數據庫超時時長少60秒,參考MySQL wait_timeout參數(show variables like '%timeout%';) --> spring.datasource.hikari.max-lifetime=28740000 spring.datasource.hikari.connection-test-query=SELECT 1
原文鏈接:https://blog.csdn.net/ling_76539446/article/details/102637024