Spring Boot 預設選擇 Tomcat JDBC Pool 作為資料庫連接配接池。Tomcat(8) 連接配接池常用的屬性:
<col>
屬性
描述
預設值
defaultAutoCommit
連接配接池中建立的連接配接預設是否自動送出事務
驅動的預設值
defaultReadOnly
連接配接池中建立的連接配接預設是否為隻讀狀态
-
defaultCatalog
連接配接池中建立的連接配接預設的 catalog
driverClassName
驅動類的名稱
username
資料庫賬戶
password
資料庫密碼
maxActive
連接配接池同一時間可配置設定的最大活躍連接配接數
100
maxIdle
始終保留在池中的最大連接配接數,如果啟用,将定期檢查限制連接配接,超出此屬性設定的值且空閑時間超過minEvictableIdleTimeMillis的連接配接則釋放
與maxActive設定的值相同
minIdle
始終保留在池中的最小連接配接數,池中的連接配接數量若低于此值則建立新的連接配接,如果連接配接驗證失敗将縮小至此值
與initialSize設定的值相同
initialSize
連接配接池啟動時建立的初始連接配接數量
10
maxWait
最大等待時間(毫秒),如果在沒有連接配接可用的情況下等待超過此時間,則抛出異常
30000(30秒)
testOnBorrow
當從連接配接池中取出一個連接配接時是否進行驗證,若驗證失敗則從池中删除該連接配接并嘗試取出另一個連接配接
false
testOnConnect
當一個連接配接首次被建立時是否進行驗證,若驗證失敗則抛出 SQLException 異常
testOnReturn
當一個連接配接使用完歸還到連接配接池時是否進行驗證
testWhileIdle
對池中空閑的連接配接是否進行驗證,驗證失敗則回收此連接配接
validationQuery
在連接配接池傳回連接配接給調用者前用來對連接配接進行驗證的查詢 SQL
null
validationQueryTimeout
SQL 查詢驗證逾時時間(秒),小于或等于 0 的數值表示禁用
-1
timeBetweenEvictionRunsMillis
在空閑連接配接回收器線程運作期間休眠時間(毫秒), 該值不應該小于 1 秒,它決定線程多久驗證空閑連接配接或丢棄連接配接的頻率
5000(5秒)
minEvictableIdleTimeMillis
連接配接在池中保持空閑而不被回收的最小時間(毫秒)
60000(60秒)
removeAbandoned
标記是否删除洩露的連接配接,如果連接配接超出removeAbandonedTimeout的限制,且該屬性設定為 true,則連接配接被認為是被洩露并且可以被删除
removeAbandonedTimeout
洩露的連接配接可以被删除的逾時時間(秒),該值應設定為應用程式查詢可能執行的最長時間
60
# src/main/resources/application.properties
1
2
3
4
5
6
7
8
9
11
12
13
14
15
16
spring.datasource.url=jdbc:mysql://127.0.0.1/spring_boot_testing_storage
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.tomcat.default-auto-commit=true
spring.datasource.tomcat.initial-size=3
spring.datasource.tomcat.max-active=120
spring.datasource.tomcat.max-wait=10000
spring.datasource.tomcat.test-on-borrow=true
spring.datasource.tomcat.test-while-idle=true
spring.datasource.tomcat.validation-query=SELECT 1
spring.datasource.tomcat.validation-query-timeout=3
spring.datasource.tomcat.time-between-eviction-runs-millis=10000
spring.datasource.tomcat.min-evictable-idle-time-millis=120000
spring.datasource.tomcat.remove-abandoned=true
spring.datasource.tomcat.remove-abandoned-timeout=120
Spring Boot Data Jpa 依賴聲明:
# pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
Spring Boot 如果發現 Tomcat 連接配接池不可用,則嘗試選擇 HikariCP 作為預設連接配接池。HikariCP 連接配接池常用的屬性:
dataSourceClassName
JDBC 驅動程式提供的 DataSource 類的名稱,如果使用了jdbcUrl則不需要此屬性
jdbcUrl
資料庫連接配接位址
資料庫賬戶,如果使用了jdbcUrl則需要此屬性
資料庫密碼,如果使用了jdbcUrl則需要此屬性
autoCommit
是否自動送出事務
true
connectionTimeout
連接配接逾時時間(毫秒),如果在沒有連接配接可用的情況下等待超過此時間,則抛出 SQLException
idleTimeout
空閑逾時時間(毫秒),隻有在minimumIdle<maximumPoolSize時生效,逾時的連接配接可能被回收,數值 0 表示空閑連接配接永不從池中删除
600000(10分鐘)
maxLifetime
連接配接池中的連接配接的最長生命周期(毫秒)。數值 0 表示不限制
1800000(30分鐘)
connectionTestQuery
連接配接池每配置設定一條連接配接前執行的查詢語句(如:SELECT 1),以驗證該連接配接是否是有效的。如果你的驅動程式支援 JDBC4,HikariCP 強烈建議我們不要設定此屬性
minimumIdle
最小空閑連接配接數,HikariCP 建議我們不要設定此值,而是充當固定大小的連接配接池
與maximumPoolSize數值相同
maximumPoolSize
連接配接池中可同時連接配接的最大連接配接數,當池中沒有空閑連接配接可用時,就會阻塞直到超出connectionTimeout設定的數值
poolName
連接配接池名稱,主要用于顯示在日志記錄和 JMX 管理控制台中
auto-generated
spring.datasource.hikari.auto-commit=true
spring.datasource.hikari.connection-test-query=SELECT 1
spring.datasource.hikari.maximum-pool-size=150
<exclusions>
<exclusion>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
</exclusion>
</exclusions>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>2.6.1</version>
Spring Boot 如果發現 HikariCP 連接配接池不可用,則嘗試選擇 DBCP 作為預設連接配接池。DBCP(2) 連接配接池常用的屬性:
url
maxTotal
連接配接池同一時間可配置設定的最大活躍連接配接數;負數表示不限制
可以在池中保持空閑的最大連接配接數,超出此值的空閑連接配接被釋放,負數表示不限制
可以在池中保持空閑的最小連接配接數,低于此值将建立空閑連接配接,若設定為 0,則不建立
maxWaitMillis
最大等待時間(毫秒),如果在沒有連接配接可用的情況下等待超過此時間,則抛出異常;-1 表示無限期等待,直到擷取到連接配接為止
SQL 查詢驗證逾時時間(秒)
testOnCreate
連接配接在建立之後是否進行驗證
對池中空閑的連接配接是否進行驗證,驗證失敗則釋放此連接配接
在空閑連接配接回收器線程運作期間休眠時間(毫秒),如果設定為非正數,則不運作此線程
numTestsPerEvictionRun
空閑連接配接回收器線程運作期間檢查連接配接的個數
removeAbandonedOnBorrow
300(5分鐘)
poolPreparedStatements
設定該連接配接池的預處理語句池是否生效
17
18
19
20
21
spring.jmx.enabled=false
spring.datasource.dbcp2.default-auto-commit=true
spring.datasource.dbcp2.initial-size=30
spring.datasource.dbcp2.max-total=120
spring.datasource.dbcp2.max-idle=120
spring.datasource.dbcp2.min-idle=30
spring.datasource.dbcp2.max-wait-millis=10000
spring.datasource.dbcp2.validation-query=SELECT 1
spring.datasource.dbcp2.validation-query-timeout=3
spring.datasource.dbcp2.test-on-borrow=true
spring.datasource.dbcp2.test-while-idle=true
spring.datasource.dbcp2.time-between-eviction-runs-millis=10000
spring.datasource.dbcp2.num-tests-per-eviction-run=10
spring.datasource.dbcp2.min-evictable-idle-time-millis=120000
spring.datasource.dbcp2.remove-abandoned-on-borrow=true
spring.datasource.dbcp2.remove-abandoned-timeout=120
spring.datasource.dbcp2.pool-prepared-statements=true
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.1.1</version>