SpringBoot
数据库连接池参数
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当从连接池中取出⼀个连接时是否进⾏验证,若验证失败则从池中删除该连接并尝试取出
另⼀个连接spring framework网络系统参数
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 11spring.datasource.url=jdbc:mysql://127.0.0.1/spring_boot_testing_storage spring.datasource.username=root
spring.datasource.password=root
spring.datasource.sql.jdbc.Driver
at.default-auto-commit=true
at.initial-size=3
at.max-active=120
at.max-wait=10000
at.test-on-borrow=true
at.test-while-idle=true
at.validation-query=SELECT 1
11 12 13 14 15 at.validation-query=SELECT 1
at.validation-query-timeout=3
at.time-between-eviction-runs-millis=10000 at.min-evictable-idle-time-millis=120000 at.remove-abandoned=true
at.remove-abandoned-timeout=120
Spring Boot Data Jpa 依赖声明:# l
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 2spring.datasource.url=jdbc:mysql://127.0.0.1/spring_boot_testing_storage spring.datasource.username=root
3 4 5 6 7spring.datasource.password=root
spring.datasource.sql.jdbc.Driver spring.datasource.hikari.auto-commit=true
spring.tion-test-query=SELECT 1 spring.datasource.hikari.maximum-pool-size=150
Spring Boot Data Jpa 依赖声明:# l
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>at</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 abled=false
spring.datasource.url=jdbc:mysql://127.0.0.1/spring_boot_testing_storage spring.datasource.username=root
spring.datasource.password=root
spring.datasource.sql.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.st-on-borrow=true
spring.st-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.ve-abandoned-on-borrow=true
spring.ve-abandoned-timeout=120
spring.datasource.dbcp2.pool-prepared-statements=true
Spring Boot Data Jpa 依赖声明:
# l
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>at</groupId>
<artifactId>tomcat-jdbc</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apachemons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.1.1</version>
</dependency>
</div>原⽂地址:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。