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 数据库连接池参数的更多相关文章

  1. Spring Boot 数据库连接池 Druid

    简介 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库连接池正是针对这个问 ...

  2. Spring Boot 数据库连接池 HikariCP

    简介 HikariCP 来源于日语,「光」的意思,意味着它很快!可靠的数据源,spring boot2.0 已经将 HikariCP 做为了默认的数据源链接池. 官网详细地说明了HikariCP所做的 ...

  3. spring boot 数据库连接池配置

    HikariCP 连接池配置: http://stackoverflow.com/questions/29650501/hikaricp-starts-when-mvn-spring-bootrun- ...

  4. Spring Boot 线程池

    参考 SpringBoot 线程池 程序猿DD-Spring Boot使用@Async实现异步调用:自定义线程池 如何优雅的使用和理解线程池 Spring Boot线程池的使用心得 博客园-Sprin ...

  5. Spring Boot启动命令参数详解及源码分析

    使用过Spring Boot,我们都知道通过java -jar可以快速启动Spring Boot项目.同时,也可以通过在执行jar -jar时传递参数来进行配置.本文带大家系统的了解一下Spring ...

  6. Druid + spring 配置数据库连接池

    1. Druid的简介 Druid是一个数据库连接池.Druid是目前最好的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.JBo ...

  7. 右击main 方法运行正常,启动tomcat 后,spring boot 项目 出现参数字符串是乱码的情况

    PrintWriter out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(), "utf-8")) ...

  8. Spring Boot 连接池

    配置方法 基于当前的1.5.2.RELEASE的Spring Boot. 依照官方文档,如果增加了如下依赖的配置,或者类路径中存在spring-boot-starter-jdbc的jar,那么已默认启 ...

  9. spring配置数据库连接池druid

    连接池原理 连接池基本的思想是在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象.使用完毕后,用户也并非将连 ...

随机推荐

  1. Python学习之--函数/生成器/装饰器

    Function,函数,主要是为了:1提高代码的复用程度,2将程序模块化. 定义函数 在Python中,使用def 用来定义函数,一般函数的定义如下: def name(arg1,arg2,....) ...

  2. Odoo QWeb

    1.web 模块 注意,OpenERP 模块中 web 部分用到的所有文件必须被放置在模块内的 static 文件夹里.这是强制性的,出于安全考虑. 事实上,我们创建的文件夹 CSS,JS 和 XML ...

  3. HZOI20190810 T1

    A:blue(青蛙乱跳) 好像很多人都是用的队列?甚至还有用set 然而...博主太蒻了,只能找一个sb的规律 我们来手模一个样例: 10 9 16 30 2 4 6 9 11 15 18 19 25 ...

  4. Django项目:CRM(客户关系管理系统)--56--47PerfectCRM实现CRM客户报名流程01

    #urls.py """PerfectCRM URL Configuration The `urlpatterns` list routes URLs to views. ...

  5. php函数基础(一)

    一.函数结构   1.构成部分:             关键字 function        

  6. thinkphp浏览历史功能实现方法

    这篇文章主要介绍了thinkphp浏览历史功能实现方法,可实现浏览器的浏览历史功能,是非常实用的技巧,需要的朋友可以参考下 本文实例讲述了thinkphp浏览历史功能实现方法,分享给大家供大家参考.具 ...

  7. SignalR 2.0 入门与提高 转载https://www.cnblogs.com/vance/p/SignalR.html

    SignalR 2.0 最近整理了SignalR2.0 部分知识点,原文翻译,由于自己是土鳖,翻译得不好的地方,欢迎指正!仅供各位初学者学习! 第一节. 入门ASP.NET SignalR2.0 1. ...

  8. PAT甲级——A1033 To Fill or Not to Fill

    With highways available, driving a car from Hangzhou to any other city is easy. But since the tank c ...

  9. Elasticsearch快速开始

    Elasticsearch是一个分布式RESTful风格的搜索和数据分析引擎 查询:Elasticsearch允许执行和合并多种类型的搜索——结构化.非结构化.地理位置.度量指标.搜索方式随心而变 分 ...

  10. Luogu P2577 [ZJOI2005]午餐(dp)

    P2577 [ZJOI2005]午餐 题面 题目描述 上午的训练结束了, \(THU \ ACM\) 小组集体去吃午餐,他们一行 \(N\) 人来到了著名的十食堂.这里有两个打饭的窗口,每个窗口同一时 ...