天天看點

Spring Boot 資料庫連接配接池參數

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

&lt;dependency&gt;

&lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;

&lt;artifactId&gt;spring-boot-starter-data-jpa&lt;/artifactId&gt;

&lt;/dependency&gt;

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

dataSourceClassName

JDBC 驅動程式提供的 DataSource 類的名稱,如果使用了jdbcUrl則不需要此屬性

jdbcUrl

資料庫連接配接位址

資料庫賬戶,如果使用了jdbcUrl則需要此屬性

資料庫密碼,如果使用了jdbcUrl則需要此屬性

autoCommit

是否自動送出事務

true

connectionTimeout

連接配接逾時時間(毫秒),如果在沒有連接配接可用的情況下等待超過此時間,則抛出 SQLException

idleTimeout

空閑逾時時間(毫秒),隻有在minimumIdle&lt;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

&lt;exclusions&gt;

&lt;exclusion&gt;

&lt;groupId&gt;org.apache.tomcat&lt;/groupId&gt;

&lt;artifactId&gt;tomcat-jdbc&lt;/artifactId&gt;

&lt;/exclusion&gt;

&lt;/exclusions&gt;

&lt;groupId&gt;com.zaxxer&lt;/groupId&gt;

&lt;artifactId&gt;HikariCP&lt;/artifactId&gt;

&lt;version&gt;2.6.1&lt;/version&gt;

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

&lt;groupId&gt;org.apache.commons&lt;/groupId&gt;

&lt;artifactId&gt;commons-dbcp2&lt;/artifactId&gt;

&lt;version&gt;2.1.1&lt;/version&gt;

下一篇: NYOJ 540

繼續閱讀