`
Dustin
  • 浏览: 316149 次
  • 性别: 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 (c3p0、dbcp、jndi及不使用连接池)代码

    使用连接池的优点在于提高了数据库连接的复用性,降低了系统资源消耗,提升了系统性能。同时,这些连接池还提供了自动回收、空闲检测、超时管理等功能,增强了系统的稳定性和健壮性。 总结来说,Java连接数据库的...

    c3p0所需jar包

    在Java应用中,特别是对于Web应用,数据库连接的创建和销毁是非常耗时的过程,因此使用连接池可以显著提高性能。 c3p0的核心功能包括: 1. **连接池管理**:c3p0能够自动创建、配置和管理数据库连接,避免了频繁...

    Druid安装常见30种问题

    Druid与其他数据库连接池有何区别? Druid与市场上其他数据库连接池相比,在功能、性能以及易用性方面都有显著优势。官方提供了详细的对比资料,以帮助开发者做出合适的选择:`...

    jdbc构建基于web的应用程序

    - **JNDI与DataSource**:在企业级应用中,通常使用JNDI(Java Naming and Directory Interface)查找DataSource,以实现数据库连接的管理,提高性能和可扩展性。 - **事务管理**:在Web应用中,JDBC可以配合...

    java面试宝典

    156、在jsp:useBean语法中使用beanName有何好处? 37 157、当我使用时,在浏览器的地址栏没有改变? 37 158、如何转换JSP 0.9版本的文件到JSP1.1? 37 160、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么...

    DBDemo_delphi_dbdemo_jump1i2_zip_

    例如,通过TADOConnection组件实现连接池管理,提高应用程序的性能;通过TADOTable的BeforePost、AfterPost等事件处理数据验证和业务逻辑;通过TADOCommand组件执行存储过程,以实现复杂的数据库操作。 总之,...

    jdbc_所需架包

    3. **javax.sql包**:提供了更高级别的数据源接口`DataSource`,它比`DriverManager`更高效,支持连接池管理和分布式事务。 4. **Apache Commons Collections**:如上述,这个库可以辅助数据操作,比如转换、过滤和...

    JDBC 基本概念与应用.ppt

    不过,JDBC也存在一些缺点,例如性能问题(特别是对于大量重复的SQL语句),这通常可以通过使用PreparedStatement和连接池来优化。总的来说,JDBC是Java开发中不可或缺的工具,对于任何需要与数据库交互的应用程序都...

Global site tag (gtag.js) - Google Analytics