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> |
Spring Boot 数据库连接池参数的更多相关文章
- Spring Boot 数据库连接池 Druid
简介 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库连接池正是针对这个问 ...
- Spring Boot 数据库连接池 HikariCP
简介 HikariCP 来源于日语,「光」的意思,意味着它很快!可靠的数据源,spring boot2.0 已经将 HikariCP 做为了默认的数据源链接池. 官网详细地说明了HikariCP所做的 ...
- spring boot 数据库连接池配置
HikariCP 连接池配置: http://stackoverflow.com/questions/29650501/hikaricp-starts-when-mvn-spring-bootrun- ...
- Spring Boot 线程池
参考 SpringBoot 线程池 程序猿DD-Spring Boot使用@Async实现异步调用:自定义线程池 如何优雅的使用和理解线程池 Spring Boot线程池的使用心得 博客园-Sprin ...
- Spring Boot启动命令参数详解及源码分析
使用过Spring Boot,我们都知道通过java -jar可以快速启动Spring Boot项目.同时,也可以通过在执行jar -jar时传递参数来进行配置.本文带大家系统的了解一下Spring ...
- Druid + spring 配置数据库连接池
1. Druid的简介 Druid是一个数据库连接池.Druid是目前最好的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.JBo ...
- 右击main 方法运行正常,启动tomcat 后,spring boot 项目 出现参数字符串是乱码的情况
PrintWriter out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(), "utf-8")) ...
- Spring Boot 连接池
配置方法 基于当前的1.5.2.RELEASE的Spring Boot. 依照官方文档,如果增加了如下依赖的配置,或者类路径中存在spring-boot-starter-jdbc的jar,那么已默认启 ...
- spring配置数据库连接池druid
连接池原理 连接池基本的思想是在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象.使用完毕后,用户也并非将连 ...
随机推荐
- Windows API 25篇 TerminateProcess
导语:结束一个进程的方法通常有:exit(), ExitProcess, TerminateProcess. 通常一个进程在正常情况下结束的话,系统会调用 ExitProcess函数结束进程,但有时候 ...
- [转]WPF命令集 Command
在我们日常的应用程序操作中,经常要处理各种各样的命令和进行相关的事件处理,比如需要复制.粘贴文本框中的内容;上网查看网页时,可能需要返回上一网页查看相应内容;而当我们播放视频和多媒体时,我们可能要调节 ...
- VS中添加配置X86平台
最近IIS发布程序时,总是容易碰到下面的错误.这个错误网上绝大部分都是提出在VS把解决方案设置为在X86平台生成,然后再发布.但是查看应用程序后发现没有X86平台选项,下面是添加X86目标平台的方法.
- 装配SpringBean(五)--注解装配之自动装配
在spring ioc容器中,spring要先完成bean的定义和生成,然后需要需要注入的资源,在上一篇的扫描组件中就是这样实现的.而自动装配中我们只需要定义和生成一个bean,发现bean的过程将由 ...
- IndentationError: expected an indented block错误
Python语言是一款对缩进非常敏感的语言,给很多初学者带来了困惑,即便是很有经验的python程序员,也可能陷入陷阱当中.最常见的情况是tab和空格的混用会导致错误,或者缩进不对,而这是用肉眼无法分 ...
- JasperReports报表组15
组在JasperReports的协助组织对报告的数据以逻辑方式.报告组代表连续记录的数据源中有一些共同点,比如某个报表字段的值的序列.报告组由<group>元素定义.一个报表可以有任意数量 ...
- Tensorflow技巧
1.尽量控制图片大小在1024以内,不然显存会爆炸. 2.尽量使用多GPU并行工作,训练下降速度快. 3.当需要被检测的单张图片里物体太多时,记得修改Region_proposals的个数 4.测试的 ...
- JDBC连接整个过程
1.导入驱动(放在lib下) connector-java-5.0.8-bin.jar 2.导入配置文件(放在src下) jdbc.properties driverClass=com.mysql.j ...
- 微信小程序之组件的集合(二)
继续微信小程序开发的学习,继续跟着老师的讲课思路来学习,继续开发项目中所用到的组件 一.导航栏navi组件的开发 1.新建组件的文件结构 这个就是先新建目录navi.然后在navi文件夹中新建comp ...
- 用reduce装逼 之 多个数组中得出公共子数组,统计数组元素出现次数
昨天做了一道美团的面试题,要求是给N个数组,找出N个数组的公共子数组. ,,,,]; ,,,,]; ,,,,]; ,,,,]; 以上四个数组,有公共子数组2, 3,7 function main(){ ...
