数据库连接池种类及性能

现在很多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

数据库连接池种类及性能相关推荐

  1. 数据库连接池种类、C3P0数据库连接池、德鲁伊数据库连接池

    数据库连接池种类 1.JDBC的数据库连接池使用javax.sql.DataSource来表示,DataSource只是一个接口,该接口通常由第三方提供实现 2.C3P0数据库连接池,速度相对较慢,稳 ...

  2. 主流数据库连接池性能比较 hikari druid c3p0 dbcp jdbc

    背景 对现有的数据库连接池做调研对比,综合性能,可靠性,稳定性,扩展性等因素选出推荐出最优的数据库连接池 . NOTE: 本文所有测试均是MySQL库 测试结论 1:性能方面 hikariCP> ...

  3. javaweb学习总结(三十九)——数据库连接池

    javaweb学习总结(三十九)--数据库连接池 一.应用程序直接获取数据库连接的缺点 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长.假设网站一天10 ...

  4. 数据库连接池性能比对(hikari druid c3p0 dbcp jdbc)

    背景 对现有的数据库连接池做调研对比,综合性能,可靠性,稳定性,扩展性等因素选出推荐出最优的数据库连接池 . NOTE: 本文所有测试均是MySQL库 测试结论 1:性能方面 hikariCP> ...

  5. javaweb学习总结(三十九):数据库连接池

    一.应用程序直接获取数据库连接的缺点 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长.假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大 ...

  6. JDBC开发之数据库连接池

    JDBC开发之数据库连接池 使用数据库连接池优化程序性能 应用程序直接获取链接的缺点:用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长.假设网站一天10万 ...

  7. 孤傲苍狼 只为成功找方法,不为失败找借口! javaweb学习总结(三十九)——数据库连接池 一、应用程序直接获取数据库连接的缺点   用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要

    孤傲苍狼 只为成功找方法,不为失败找借口! javaweb学习总结(三十九)--数据库连接池 一.应用程序直接获取数据库连接的缺点 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对 ...

  8. 传统方式连接数据库的弊端和数据库连接池原理

    本次博客带领大家学习传统方式连接数据库的弊端和数据库连接池原理. 传统获取Connection问题分析 传统的JDBC数据库连接使用 DriverManager 来获取,每次向数据库建立连接的时候都要 ...

  9. 数据库性能优化—数据库连接池

    文章出自:阿里巴巴十亿级并发系统设计(2021版) 链接:https://pan.baidu.com/s/1lbqQhDWjdZe1CBU-6U4jhA 提取码:8888 目录 接下来,让我们正式进入 ...

最新文章

  1. 批量迁移oracle表存储
  2. WPF开发中遇到的问题及解决系列(一):How can I programmatically click a Button
  3. Java网络编程2---Socket-TCP编程
  4. 前端学习(3236):react生命周期3
  5. 【Java】命令行下的Java模块化建构、编译与执行
  6. 【转】js版的俄罗斯方块!!
  7. DB-Engines 2019 年度数据库出炉:MySQL 成为年度数据库赢家
  8. 找出两个字符串中所有共同的字符_面试中的两个字符串问题竟给我整懵了?!| 原力计划...
  9. jquery中css()与animate()
  10. 优先队列及BFS应用
  11. android手机刷机后驱动更新失败,怎么用电脑给手机刷机 电脑刷机驱动安装失败怎么办...
  12. 用电器开关应该接在火线上还是零线上
  13. 指投:3 常见的指数基金品种
  14. 新手不翻车的可乐鸡翅做法!好吃到吮指!
  15. 腾讯企业邮箱开发(非官方开发文档方式
  16. phpfilter的妙用
  17. 关于htons和htonl
  18. 计算机连接投影仪后黑屏咋调试,电脑连接投影机播放电影过程中经常性黑屏一秒故障解决一例-投影仪怎么连接电脑...
  19. 运营商大数据获客的优势
  20. java教材管理系统,基于web的教材管理系统

热门文章

  1. AR+教育意义巨大,将对行业未来产生深远影响
  2. 百度运维部电子竞技大赛!
  3. 从SQL Server数据库转到Oracle数据库的数据脚本处理
  4. ubuntu下python3及idle3的安装
  5. 【linux高级程序设计】(第八章)进程管理与程序开发 4
  6. centos安装redmine项目管理系统
  7. 简单介绍Javascript匿名函数和面向对象编程
  8. 虚函数virtual
  9. [Delphi]怎样访问Internet Explorer中的WebBrowser
  10. python语法基础整理_Python基础语法笔记整理——只记录部分不熟少用的