开发者社区> 优惠码发放> 正文

数据库连接池种类及性能

简介: 数据库连接池种类及性能 现在很多Web服务器(Weblogic, WebSphere, Tomcat)都提供了DataSoruce的实现,即连接池的实现。通常我们把DataSource的实现,按其英文含义称之为数据源,数据源中都包含了数据库连接池的实现。
+关注继续查看

数据库连接池种类及性能

现在很多Web服务器(Weblogic, WebSphere, Tomcat)都提供了DataSoruce的实现,即连接池的实现。通常我们把DataSource的实现,按其英文含义称之为数据源,数据源中都包含了数据库连接池的实现。


开源数据库连接池:
1 dbcp
dbcp可能是使用最多的开源连接池
这个连接池可以设置最大和最小连接,连接等待时间等,基本功能都有
优缺点:稳定性还是可以,不过速度稍慢,在大并发量的压力下稳定性有所下降,此外不提供连接池监控
2 c3p0
c3p0是另外一个开源的连接池,在业界也是比较有名的,这个连接池可以设置最大和最小连接,连接等待时间等,基本功能都有。

优缺点:连接池的持续运行的稳定性相当不错,在大并发量的压力下稳定性也有一定保证,此外不提供连接池监控。
3 proxool
proxool这个连接池可能用到的人比较少,但也有一定知名度,这个连接池可以设置最大和最小连接,连接等待时间等,基本功能都有。

优缺点:稳定性有一定问题,有一个需要长时间跑批的任务场景任务,优势--连接池监控

4.Druid

Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。
商业中间件连接池
商业级别的中间件所自带的数据库连接池,他们的性能以及调配比开源好

1 weblogic的连接池
优缺点:在具此连接池的持续运行的稳定性很强,在大并发量的压力下性能也相当优秀,另外在一些异常情况下连接池里的连接也能够及时释放。连接池监控一目了然,及时到位。

2 websphere的连接池   
优缺点:此连接池的持续运行的稳定性相当强,在大并发量的压力下性能也足够优秀,另外在一些异常情况下连接池里的连接能够及时释放, 连接池监控配置有些复杂,但是配置好后各项指标一目了然并且有图形显示  
关于最大链接数和最小连接数设置问题
1.为什么不大一点?
  再分配多了效果也不大了,一个是应用服务器维持这个连接数需要内存支持,刚才说了32位的机器只能支持到1.5G,并且维护大量的连接进行分配使用对cpu也是一个不小的负荷,因此不宜太大。
2 为什么不小一点?
回答:   如果太小,那么在上述规模项目的并发量以及数据量上来以后会造成排队现象,系统会变慢,数据库连接会经常打开和关闭,性能上有压力,用户体验也不好。

数据库连接池的配置:

<!-- 数据库连接池 --> 
 <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> 
   <!-- 基本属性driverClassName url、user、password --> 
 <property name="driverClassName" value = "${jdbc.driver}" /> 
 <property name="url" value="${jdbc.url}" /> 
 <property name="username" value="${jdbc.username}" /> 
 <property name="password" value="${jdbc.password}" /> 
   <!-- 配置初始化大小、最小、最大 --> 
 <property name="initialSize" value="${jdbc.initialSize}" /> 
 <property name="minIdle" value="${jdbc.minIdle}" /> 
 <property name="maxActive" value="${jdbc.maxActive}" /> 
   <!-- 配置获取连接等待超时的时间 --> 
 <property name="maxWait" value="${jdbc.maxWait}" /> 
   <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --> 
 <property name="timeBetweenEvictionRunsMillis" value="${jdbc.timeBetweenEvictionRunsMillis}" /> 
   <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --> 
 <property name="minEvictableIdleTimeMillis" value="${jdbc.minEvictableIdleTimeMillis}" /> 
   <property name="validationQuery" value="${jdbc.validationQuery}" /> 
 <property name="testWhileIdle" value="${jdbc.testWhileIdle}" /> 
 <property name="testOnBorrow" value="${jdbc.testOnBorrow}" /> 
 <property name="testOnReturn" value="${jdbc.testOnReturn}" /> 
   <!-- 打开PSCache,并且指定每个连接上PSCache的大小 --> 
 <property name="poolPreparedStatements" value="${jdbc.poolPreparedStatements}" /> 
 <property name="maxPoolPreparedStatementPerConnectionSize" value="${jdbc.maxPoolPreparedStatementPerConnectionSize}" /> 

原文地址https://blog.csdn.net/shahuhubao/article/details/81204820

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
JAVA反射性能约慢三个量级
JAVA反射性能约慢三个量级
13 0
基于HiKariCP组件,分析连接池原理
HiKariCP作为SpringBoot2框架的默认连接池,号称是跑的最快的连接池,数据库连接池与之前两篇提到的线程池和对象池,从设计的原理上都是基于池化思想,只是在实现方式上有各自的特点;
138 0
哪些问题会引起接口性能问题
这个问题的答案非常多,需要根据自己的业务场景具体分析。
78 0
想要实现在时序场景下“远超”通用数据库,需要做到哪几点?
近年来,随着物联网技术和市场的快速发展、企业业务的加速扩张,时序数据的处理难题也越来越受到行业和企业的重视,时序场景下通用型数据库步履维艰,各种时序数据库产品应运而起。但是,做一个优质的时序数据库真的很容易吗?本篇文章将从数据库开发者的角度,解剖时序场景下的数据处理需求、分析时序数据库设计思路,给到读者一些硬核技术思考。
66 0
数据库连接池设置多少连接才合适?
前段时间在一个老项目中经历过一个问题:一个 Dubbo 服务,启动的时候慢的要死,后来看日志查原因整个过程一直在初始化数据库连接。一看数据库连接参数,连接池大小:1024。 很多入行晚的同学没有经历过手写 JDBC 连接的日子。那个时候没有数据库连接池的概念,都是原生代码一顿搞,后来有了 iBATIS 之后 Java 开发的繁杂程度才逐渐减轻,也衍生 C3P0 数据库连接池这种基础的东西。
1206 0
性能优化技巧 - 内存关联计算
关联动作会严重影响性能,SPL支持内存预关联,可以加快关联动作,从而提升性能。 为了理解关联动作对性能的影响,下面设计一套Oracle关联表,以及无关联的宽表,并执行同样的计算。 关联表的结构和关系如下:数据量:通话记录表(百万条)、用户表(十万条)、开户网点(一万条),代理商表(一万条)。
813 0
前端优化系列 - 初始化的性能影响
数据表明,即使在资源有缓存的情况下,首次访问页面的耗时也是非首次访问的两倍。为什么首次访问会这么耗时呢?本文详细分析页面首次访问耗时的原因。
3774 0
在阿里druid上增加数据库连接池监控功能
使用了druid,但是没有监控,是非常痛苦的一件事情。druid其实提供了该功能,只需要简单配置开发即可使用。
3136 0
在进行数据库编程时,连接池有什么作用?
由于创建连接和释放连接都有很大的开销(尤其是数据库服务器不在本地时,每次建立连接都需要进行TCP的三次握手,释放连接需要进行TCP四次握手,造成的开销是不可忽视的),为了提升系统访问数据库的性能,可以事先创建若干连接置于连接池中,需要时直接从连接池获取,使用结束时归还连接池而不必关闭连接,从而避免频繁创建和释放连接所造成的开销,这是典型的用空间换取时间的策略(浪费了空间存储连接,但节省了创建和释放连接的时间)。
1392 0
数据库连接池的工作机制
J2ee 服务器启动时会建立一定数量的链接,并一直维护不少于此数目的池连接。客户端程序需要连接时,池驱动程序就会返回一个未使用的池连接并将其标记为忙。若当前没有空闲连接,池驱动程序就建立一定数量的连接,新建连接的数量由配置参数决定。
1117 0
+关注
优惠码发放
阿里云优惠码阿里云推荐券bieryun.com
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载