现在 主流的数据库连接池有:Proxool、C3P0、DBCP、tomcat-jdbc、Druid。其中tomcat-jdbc是tomcat服务器比较可靠的 数据库连接池。 timeBetweenEvictionRunsMillis="30000" p:minEvictableIdleTimeMillis="30000" /> 3.配置注意事项 必须配置,才能启用tomcat-jdbc
NOTE: 本文所有测试均是MySQL库 测试结论 1:性能方面 hikariCP>druid>tomcat-jdbc>dbcp>c3p0 。 功能对比 功能 dbcp druid c3p0 tomcat-jdbc HikariCP 是否支持PSCache 是 是 是 否 否 监控 jmx jmx/log/http jmx,log jmx jmx mock性能数据 (单位:ms) 5 20 50 100 tomcat-jdbc 442 447 1,013 1,264 c3p0 4,480 5,527 7,449 10,725 dbcp 676 689 867 1,292 hikari 38 33 38 30 druid 291 293 562 985 mysql性能数据 (单位:ms) 5 20 50 100 tomcat-jdbc 436 性能表现:hikariCP>druid>tomcat-jdbc>dbcp>c3p0。 hikariCP 的性能及其优异。hikariCP号称java平台最快的数据库连接池。
使用tomcat-jdbc连接池。 pom.xml: <! -- tomcat jdbc --> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jdbc</artifactId
central repositoryhttp://repo1.maven.org/maven2/com/alibaba/druid/Druid与各数据源性能比对1、性能方面 hikariCP>druid>tomcat-jdbc 结论(数据和结论来自阿里druid团队) Druid是性能最好的数据库连接池,tomcat-jdbc和druid性能接近。 proxool在激烈并发时会抛异常,完全不靠谱。
前言:配置数据源连接池的时候如果没有配置连接检查或者超时回收,造成之后应用通过连接池getConnection时,都可能获取到这些不可用的连接。druid没有上述问题,因为默认有缺省值。
-- 把tomcat-jdbc连接池排除掉,这样spring-boot就会寻找是否有HikariCP可用 --> <exclusions> <exclusion> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jdbc</artifactId>
tomcat-jdbc源码分析 tomcat-jdbc的close方法由拦截器实现,具体的逻辑代码: if (compare(CLOSE_VAL,method)) { if (connection tomcat-jdbc维护了两个Queue:busy和idle,用于存放空闲和已借出连接,连接还给连接池的过程简单的说就是将该连接从busy队列中移除,并放在idle队列中的过程。
各数据库连接池测试结论 1:性能方面 HikariCP>Druid>tomcat-jdbc>dbcp>c3p0 。hikariCP的高性能得益于最大限度的避免锁竞争。 5.各数据库连接池功能对比 功能 dbcp druid c3p0 tomcat-jdbc HikariCP 是否支持PSCache 是 是 是 否 否 监控 jmx jmx/log/http jmx,
https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98 1、性能方面 hikariCP>druid>tomcat-jdbc
<artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> 配置数据库 Spring Boot 默认提供tomcat-jdbc
-- 把tomcat-jdbc连接池排除掉,这样spring-boot就会寻找是否有HikariCP可用 --> <exclusions> <exclusion > <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jdbc</artifactId
工程的结构如下: (源码链接: https://dev.tencent.com/u/east4ming/p/openshift-quickstarts/git/tree/1.2/tomcat-jdbc) 见https://dev.tencent.com/u/east4ming/p/openshift-quickstarts/git/blob/1.2/tomcat-jdbc/src/main/java/org 见https://dev.tencent.com/u/east4ming/p/openshift-quickstarts/git/blob/1.2/tomcat-jdbc/src/main/webapp
-- 把tomcat-jdbc连接池排除掉,这样spring-boot就会寻找是否有HikariCP可用 --> <exclusions> <exclusion > <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jdbc</artifactId
-- tomcat-jdbc --> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jdbc<
</dependency> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jdbc
以下是一个示例:<dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jdbc</artifactId>
如果您在Tomcat容器中运行应用程 序,这一点尤为重要,因为默认情况下会提供 tomcat-jdbc 。 始终可以手动配置其他连接池。
spring-boot-starter-data-jpa</artifactId> <exclusions> <exclusion> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jdbc spring-boot-starter-data-jpa</artifactId> <exclusions> <exclusion> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jdbc
dependency> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jdbc
</exclusions> </dependency> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jdbc