Spring Boot 數據庫連接池參數


Tomcat JDBC 連接池

Spring Boot 默認選擇 Tomcat JDBC Pool 作為數據庫連接池。Tomcat(8) 連接池常用的屬性:

屬性 描述 默認值
defaultAutoCommit 連接池中創建的連接默認是否自動提交事務 驅動的缺省值
defaultReadOnly 連接池中創建的連接默認是否為只讀狀態 -
defaultCatalog 連接池中創建的連接默認的 catalog -
driverClassName 驅動類的名稱 -
username 數據庫賬戶 -
password 數據庫密碼 -
maxActive 連接池同一時間可分配的最大活躍連接數 100
maxIdle 始終保留在池中的最大連接數,如果啟用,將定期檢查限制連接,超出此屬性設定的值且空閑時間超過minEvictableIdleTimeMillis的連接則釋放 與maxActive設定的值相同
minIdle 始終保留在池中的最小連接數,池中的連接數量若低於此值則創建新的連接,如果連接驗證失敗將縮小至此值 與initialSize設定的值相同
initialSize 連接池啟動時創建的初始連接數量 10
maxWait 最大等待時間(毫秒),如果在沒有連接可用的情況下等待超過此時間,則拋出異常 30000(30秒)
testOnBorrow 當從連接池中取出一個連接時是否進行驗證,若驗證失敗則從池中刪除該連接並嘗試取出另一個連接 false
testOnConnect 當一個連接首次被創建時是否進行驗證,若驗證失敗則拋出 SQLException 異常 false
testOnReturn 當一個連接使用完歸還到連接池時是否進行驗證 false
testWhileIdle 對池中空閑的連接是否進行驗證,驗證失敗則回收此連接 false
validationQuery 在連接池返回連接給調用者前用來對連接進行驗證的查詢 SQL null
validationQueryTimeout SQL 查詢驗證超時時間(秒),小於或等於 0 的數值表示禁用 -1
timeBetweenEvictionRunsMillis 在空閑連接回收器線程運行期間休眠時間(毫秒), 該值不應該小於 1 秒,它決定線程多久驗證空閑連接或丟棄連接的頻率 5000(5秒)
minEvictableIdleTimeMillis 連接在池中保持空閑而不被回收的最小時間(毫秒) 60000(60秒)
removeAbandoned 標記是否刪除泄露的連接,如果連接超出removeAbandonedTimeout的限制,且該屬性設置為 true,則連接被認為是被泄露並且可以被刪除 false
removeAbandonedTimeout 泄露的連接可以被刪除的超時時間(秒),該值應設置為應用程序查詢可能執行的最長時間 60

 

# src/main/resources/application.properties

 

 

1

2

3

4

5

6

7

8

9

10

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

 

 

1

2

3

4

 

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-jpa</artifactId>

</dependency>

 

HikariCP 連接池

Spring Boot 如果發現 Tomcat 連接池不可用,則嘗試選擇 HikariCP 作為默認連接池。HikariCP 連接池常用的屬性:

屬性 描述 默認值
dataSourceClassName JDBC 驅動程序提供的 DataSource 類的名稱,如果使用了jdbcUrl則不需要此屬性 -
jdbcUrl 數據庫連接地址 -
username 數據庫賬戶,如果使用了jdbcUrl則需要此屬性 -
password 數據庫密碼,如果使用了jdbcUrl則需要此屬性 -
autoCommit 是否自動提交事務 true
connectionTimeout 連接超時時間(毫秒),如果在沒有連接可用的情況下等待超過此時間,則拋出 SQLException 30000(30秒)
idleTimeout 空閑超時時間(毫秒),只有在minimumIdle<maximumPoolSize時生效,超時的連接可能被回收,數值 0 表示空閑連接永不從池中刪除 600000(10分鍾)
maxLifetime 連接池中的連接的最長生命周期(毫秒)。數值 0 表示不限制 1800000(30分鍾)
connectionTestQuery 連接池每分配一條連接前執行的查詢語句(如:SELECT 1),以驗證該連接是否是有效的。如果你的驅動程序支持 JDBC4,HikariCP 強烈建議我們不要設置此屬性 -
minimumIdle 最小空閑連接數,HikariCP 建議我們不要設置此值,而是充當固定大小的連接池 與maximumPoolSize數值相同
maximumPoolSize 連接池中可同時連接的最大連接數,當池中沒有空閑連接可用時,就會阻塞直到超出connectionTimeout設定的數值 10
poolName 連接池名稱,主要用於顯示在日志記錄和 JMX 管理控制台中 auto-generated

 

# src/main/resources/application.properties

 

 

1

2

3

4

5

6

7

 

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.hikari.auto-commit=true

spring.datasource.hikari.connection-test-query=SELECT 1

spring.datasource.hikari.maximum-pool-size=150

 

 

Spring Boot Data Jpa 依賴聲明:

 

# pom.xml

 

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

 

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-jpa</artifactId>

<exclusions>

<exclusion>

<groupId>org.apache.tomcat</groupId>

<artifactId>tomcat-jdbc</artifactId>

</exclusion>

</exclusions>

</dependency>

<dependency>

<groupId>com.zaxxer</groupId>

<artifactId>HikariCP</artifactId>

<version>2.6.1</version>

</dependency>

 

DBCP 連接池

Spring Boot 如果發現 HikariCP 連接池不可用,則嘗試選擇 DBCP 作為默認連接池。DBCP(2) 連接池常用的屬性:

屬性 描述 默認值
url 數據庫連接地址 -
username 數據庫賬戶 -
password 數據庫密碼 -
driverClassName 驅動類的名稱 -
defaultAutoCommit 連接池中創建的連接默認是否自動提交事務 驅動的缺省值
defaultReadOnly 連接池中創建的連接默認是否為只讀狀態 驅動的缺省值
defaultCatalog 連接池中創建的連接默認的 catalog -
initialSize 連接池啟動時創建的初始連接數量 0
maxTotal 連接池同一時間可分配的最大活躍連接數;負數表示不限制 8
maxIdle 可以在池中保持空閑的最大連接數,超出此值的空閑連接被釋放,負數表示不限制 8
minIdle 可以在池中保持空閑的最小連接數,低於此值將創建空閑連接,若設置為 0,則不創建 0
maxWaitMillis 最大等待時間(毫秒),如果在沒有連接可用的情況下等待超過此時間,則拋出異常;-1 表示無限期等待,直到獲取到連接為止 -
validationQuery 在連接池返回連接給調用者前用來對連接進行驗證的查詢 SQL -
validationQueryTimeout SQL 查詢驗證超時時間(秒) -
testOnCreate 連接在創建之后是否進行驗證 false
testOnBorrow 當從連接池中取出一個連接時是否進行驗證,若驗證失敗則從池中刪除該連接並嘗試取出另一個連接 true
testOnReturn 當一個連接使用完歸還到連接池時是否進行驗證 false
testWhileIdle 對池中空閑的連接是否進行驗證,驗證失敗則釋放此連接 false
timeBetweenEvictionRunsMillis 在空閑連接回收器線程運行期間休眠時間(毫秒),如果設置為非正數,則不運行此線程 -1
numTestsPerEvictionRun 空閑連接回收器線程運行期間檢查連接的個數 3
minEvictableIdleTimeMillis 連接在池中保持空閑而不被回收的最小時間(毫秒) 1800000(30分鍾)
removeAbandonedOnBorrow 標記是否刪除泄露的連接,如果連接超出removeAbandonedTimeout的限制,且該屬性設置為 true,則連接被認為是被泄露並且可以被刪除 false
removeAbandonedTimeout 泄露的連接可以被刪除的超時時間(秒),該值應設置為應用程序查詢可能執行的最長時間 300(5分鍾)
poolPreparedStatements 設置該連接池的預處理語句池是否生效 false

 

# src/main/resources/application.properties

 

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

 

spring.jmx.enabled=false

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.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

 

Spring Boot Data Jpa 依賴聲明:

 

# pom.xml

 

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

 

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-jpa</artifactId>

<exclusions>

<exclusion>

<groupId>org.apache.tomcat</groupId>

<artifactId>tomcat-jdbc</artifactId>

</exclusion>

</exclusions>

</dependency>

<dependency>

<groupId>org.apache.commons</groupId>

<artifactId>commons-dbcp2</artifactId>

<version>2.1.1</version>

</dependency>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM