`
Dustin
  • 浏览: 310223 次
  • 性别: Icon_minigender_1
  • 来自: 广州/成都
社区版块
存档分类
最新评论

使用DataSource的连接池何以提高性能?

阅读更多

  最初发表在这里。 

 

   连接池为什么能够提高性能呢? 打个比喻吧:
     从前有一条河,河水弯弯向东流。河东有个村庄叫河东村,河西有个小镇叫河西镇,河东村的村民经常要跨过小河到河西镇去购买些日常用品,但是小河上没有桥啊,怎么办呢?村民只好每次过河的时候,千辛万苦,披荆斩棘,搭起一座独木桥,等买完东西回来的时候,再把桥给拆了。
   这样过了许多年,村民们慢慢觉得这样不划算啊,每次河都要花那么大力气搭桥,当初何必把桥拆了呢。但想想这也不是办法,如果个个都不“过河拆桥”,那么用不了几年,河上不就全是破破破烂烂的独木桥吗,严重影响市容市貌啊。怎么办呢?大家想啊想,有一天终于想出个办法来了,成立一个独木桥管理委员会,专门管理在修桥事务,以供村民使用 。因为技术限制,大家造出来的桥只能一次只能供一个人使用,而且造型也不漂亮,因此委员会制定了一个策略:
   1、过河的人要在委员会处领取“桥梁使用证”,一证一桥,用完需将证件交回给委员会。
   2、委员会事先造好一定数量的桥,如10座,以供人们使用。
   3、当有人需要过桥向委员会索取证件时,委员会检查当前是否有空闲的桥,有则派发使用证,如果当前造的桥都有人用,则检查是否桥的数量已经达到上限(20座),如果没有则马上派人新造一座桥,并向该村民派发通行证。
   4、如果桥的数量已经达到预先设定的上限(20座)了,那么,委员会只好让申请人暂时等候,等前面的人回来交还使用证再给该村民派发。
   5、如果某些桥在一定时间内没人使用,委员会就会它拆掉。
  这样一来,村民们再也不用重复建设了,大大减少了对河岸树木的毁坏,保护了植被,杜绝了水土流失,于是风调雨顺,人们过上了快乐的生活。
    河东村就是我们的应用,河西镇是数据库。连接池就像那个委员会吧,那个“桥梁使用证”就是DataSource返回的Connection了。那些独木桥就是物理连接,每台机器是有限制的,而且造价十分“昂贵”。村民们用完桥梁后,只能把证件交还给委员会,绝对不能把桥给拆了。
    如果不用DataSource,我们直接用DriverManager来实现自己的连接池可以吗?可以,但必须首先解决一个问题:怎样防止村民在交还证件的时候顺便把桥给拆了(都是用Connection.close()).而且,有资料说直接使用DriverManager建立连接池是没有效果的,因为通过DriverManager的getConnection方法取得是数据库的物理连接,而这跟DataSource中不一样,是没有经过driver程序的优化的。
   因此,我们还是尽量用DataSource吧,好处多多。

分享到:
评论

相关推荐

    JDBC专题(七)-数据库连接池 DataSource Pool.docx

    使用数据库连接池优化程序性能 2.1.数据库连接池的基本概念 3.自定义数据连接池 4.开源数据库连接池(第三方企业中使用的连接池) 4.1.DBCP数据源 4.2.C3P0连接池 4.3.Druid连接池 4.3.1.druid...

    canal adapter 1.1.5 DruidDataSource 连接池异常

    java.lang.RuntimeException: java.lang.RuntimeException: java.lang.ClassCastException: com.alibaba.druid.pool.DruidDataSource cannot be cast to com.alibaba.druid.pool.DruidDataSource 可用这个jar替换...

    数据源和连接池

    如Jsp,Servlet或EJB使用JDBC直接访问数据库中的数据,每一次数据方请求必须建立连接,存取数据,关闭连接等步骤,而数据库连接是一种非常昂贵的资源,频繁的建立连接,关闭连接必定是数据库性能降低,再者,JDBC直接...

    Druid简单高性能MySQL连接池

    用阿里巴巴Druid实现的一个简单连接池,高性能,高并发。

    dataSource数据库连接池的使用)

    以下的环境都是在Tomcat5.01中。 我对JDNI理解不多,这里大多数是一葫芦画瓢得到的。

    学习有关连接池的使用

    auth="Container” type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="sa" password="120010" driverClassName="com.microsoft. sqlserver. jdbc.SQLServerDriver" url=...

    阿里巴巴的开源项目JDBC连接池、监控组件 Druid.zip

     DruidDataSource 高效可管理的数据库连接池。 SQLParser Druid可以做什么? 1) 可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问...

    JavamyDbPoolUse.rar 连接池

    BasicDataSource创建DataSource(DBCP连接池配置) ComboPooledDataSource(C3P0连接池配置) Apache的DBUtils框架使用 ----------------------------------------------- BasicDataSource创建DataSource(DBCP连接池配置...

    使用JAVA连接池作的数据库增删改查

    JAVA,连接池,数据库增删改查,分层设计

    Druid数据库连接池Jar包

    Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署...

    关于数据库连接池和动态数据源的实现

    数据源连接池的基本用法,配置信息,代码案例、 实现数据源的动态切换和案例 数据源连接池的基本用法,配置信息,代码案例、 实现数据源的动态切换和案例 数据源连接池的基本用法,配置信息,代码案例、 实现...

    DataSource接口介绍与使用

    JDBC1.0是原来是用DriverManager类来产生一个对数据源的连接。JDBC2.0用一种替代的方法,使用DataSource的实现,代码变的更小巧精致,也更容易控制。

    阿里巴巴数据库连接池完整demo

    阿里巴巴数据库连接池应该是目前最好的数据库连接池:大并发稳定,操作数据库效率高。此demo不仅有和spring整合的例子,还有单独配置的实例,供大家学习掌握

    访问SQLServer - springboot自定义DBUtil(druid连接池)操作SQLServer数据库

    Spring-Boot通过druid连接池获取连接操作SQLServer数据库 总结:【共3步】 第1步:添加druid和MSSQL Driver的依赖项; 第2步:配置连接字符串; 第3步:创建数据库操作类,使用@Bean注入DruidDataSource, 然后根据...

    梦来梦往 自己实现的数据源与连接池工具,全称 mgang datasource for java

    梦来梦往 自己实现的数据源与连接池工具,全称 mgang datasource for java

    druid数据库连接池

    druid-1.0.9数据库连接池技术,由阿里巴巴提供。使用步骤: 1.导入jar包:druid-1.0.9.jar 2.定义配置文件:druid.properties,可取任意名称,放任意路径 3.获取数据库连接池对象:DruidDataSourceFactory 4....

    jsp连接池成功之例

    数据库连接池配置 <br>环境:xp2+IE7.0+tomcat5.028+mysql5.018 <br>1.假定tomcat 安装目录为:D:\Tomcat5 <br>2.假定程序目录为: D:\web\WebRoot <br> 目录设置请看WebRoot.xml 中有下面这句代码:...

    JDBC连接池HikariCP.zip

    HikariCP 是一个高性能的 JDBC 连接池组件。下图是性能的比较测试结果:使用方法:HikariConfig config = new HikariConfig(); config.setMaximumPoolSize(100); config.setDataSourceClassName(...

    建立增强BW datasource

    建立 BW datasource,使用user exit 增强datasource

    SpringBoot框架Datasource注入

    该项目采用标签形式对Datasource进行注入将Datasource组件交给容器进行统一管理

Global site tag (gtag.js) - Google Analytics