数据库连接池总结比较

    因为数据库频繁的建立、关闭连接,会极大的减低系统的性能,所以很多系统需要利用数据库连接池来提高这方面性能。
    数据库连接池的原理是,开始就在内存中开辟一块空间(集合),先往池子里面放置多个连接对象。后面需要连接的话,直接从池子里面取,不需要自己创建连接。使用完毕之后归还连接确保连接对象能循环利用。

1、Tomcat JDBC
    tomcat-jdbc.jar连接池 org.apache.tomcat.jdbc.pool 是 Apache Commons DBCP 连接池的一种替换或备选方案。
    支持高并发环境与多核/CPU 系统。
    接口的动态实现。支持 java.sql 与 java.sql 接口(只要 JDBC 驱动)。
    验证间隔时间。我们不必每次使用单个连接时都进行验证,可以在借出或归还连接时进行验证,只要不低于我们所设定的间隔时间就行。
    只执行一次查询。当与数据库建立起连接时,只执行一次的可配置查询。
    能够配置自定义拦截器。
    极其简单。核心只有 8 个文件,连接池本身则大约只有这个数目的一半。
    异步连接获取。可将连接请求队列化。
    更好地处理空闲连接。
    可以控制连接应被废弃的时间:当池满了即废弃,或者指定一个池使用容差值,发生超时就进行废弃处理。
    通过查询或语句来重置废弃连接计时器。
    经过指定时间后,关闭连接。
    当连接要被释放时,获取 JMX 通知并记录所有日志。
    可以通过 java.sql.Driver、javax.sql.DataSource 或 javax.sql.XADataSource 获取连接。通过 dataSource 与 dataSourceJNDI 属性实现这一点。
    支持 XA 连接。

2、Commons-DBCP
    使用Commons-DBCP需要使用commons-dbpc.jar、commons-collections.jar、commons-pool.jar 。
    1.x是单线程。在分配对象或对象返回的时候,会锁定全部连接池。 (不适用于2.x)
    1.x在逻辑cpu数量增加或者并发线程增加时,性能可能会变的很慢。高并发系统受到的影响会更加明显(不适用于2.x )
    拥有60多个类。
    使用静态接口,需要对应的jre需要对应的DBCP 版本,否则会抛出 NoSuchMethodException异常。
    没有自动回收空闲连接的功能。
    提供最大连接数,如果超过最大连接数,就会断开所有连接。
    不提供连接池监控。

3、Tomcat-DBCP
    Tomcat-DBCP与Commons-DBCP相似, tomcat-dbcp.jar 包不用再依赖pool.jar包。
    支持jndi的方式注册绑定。

4、Druid
    Druid是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP、PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况。
    强大的监控特性,通过Druid提供的监控功能,可以清楚知道连接池和SQL的工作情况。
        a. 监控SQL的执行时间、ResultSet持有时间、返回行数、更新行数、错误次数、错误堆栈信息;
        b. SQL执行的耗时区间分布;
        c. 监控连接池的物理连接创建和销毁次数、逻辑连接的申请和关闭次数、非空等待次数、PSCache命中率等。
    方便扩展。提供了Filter-Chain模式的扩展API,可以自己编写Filter拦截JDBC中的任何方法,可以在上面做任何事情,比如说性能监控、SQL审计、用户名密码加密、日志等等。
    集合了开源和商业数据库连接池的优秀特性。

5、BoneCP
    BoneCP 是一个快速、免费而且开源的java数据库连接池(JDBC Pool)管理工具库。BoneCP在快速这个特点上做到了极致,官方数据是C3P0等的25倍左右。
    有自动回收空闲连接功能。
    提供最大空闲时间,如果连接时间超过最大连接时间,就会断开当前连接。
    高度可扩展, 快速的连接池。
        a. 不用synchronized 关键字来处理多线程对资源的争用,而是使用 java.util.concurrent 包中的锁机制;
        b. 首次使用分区机制来分开管理数据库连接;
    利用分区技术提高性能。
    允许直接访问一个连接或者语句。
    智能调整连接池大小。
    SQL语句缓存支持。
    支持异步获取数据库连接 。
    通过释放连接助理进程来释放数据库连接,提高性能。
    支持数据库热切换。
    自动重试失败的数据库操作(当数据库或者网络挂掉的时候) 。
    延迟初始化能力。
    自动检测连接可用性。
    JMX support
    允许直接通过数据源而不是通过驱动来获取一个新的数据库连接。
    通过initSQL参数在每次获取连接的时候执行SQL 。
    Debug支持准确地高亮那些已经得到但是还没有关闭的链接。
    Debug支持展示那些被关闭两次的链接地址堆栈信息。

6、Proxool
    Proxool是一种Java数据库连接池技术。sourceforge下的一个开源项目,这个项目提供一个健壮、易用的连接池。
    提供连接池监控。
    快速,成熟,健壮。
    完全可配置。
    可以非常简单的移植到现存的代码中。

7、C3P0
    C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。
    有自动回收空闲连接功能。
    提供最大空闲时间,如果连接时间超过最大连接时间,就会断开当前连接。
    不提供连接池监控。

8、DBPool
    DBPool是一个高效、易配置的数据库连接池。它除了支持连接池应有的功能之外,还包括了一个对象池,使用户能够开发一个满足自己需求的数据库连接池。

9、XAPool
    XAPool是一个XA数据库连接池。它实现了javax.sql.XADataSource并提供了连接池工具。
    jotm实现分布式事务需要用XAPool连接池。(推荐用Atomkis代替jotm)

10、Primrose
    Primrose是一个Java开发的数据库连接池。当前支持的容器包括Tomcat4&5、Resin3与JBoss3。它同样也有一个独立的版本,可以在应用程序中使用而不必运行在容器中。Primrose通过一个WEB接口来控制SQL处理的追踪、配置,以及动态池管理。在重负荷的情况下可进行连接请求队列处理。

11、SmartPool
    SmartPool是一个连接池组件,它模仿应用服务器对象池的特性。SmartPool能够解决一些临界问题如连接泄漏(connection leaks)、连接阻塞、打开的JDBC对象(如Statements、PreparedStatements)等。
    支持多个pool
    自动关闭相关联的JDBC对象
    在所设定time-outs之后察觉连接泄漏
    追踪连接使用情况
    强制启用最近最少用到的连接
    把SmartPool“包装”成现存的一个pool

12、DDConnectionBroker
    DDConnectionBroker是一个简单,轻量级的数据库连接池。

13、MiniConnectionPoolManager
    MiniConnectionPoolManager是一个轻量级JDBC数据库连接池。它只需要Java1.5(或更高)并且没有依赖第三方包。

【 推荐 】:
        Tomcat JDBC
        Druid
        BoneCP
        Proxool
        C3P0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值