Tomcat JDBC连接池与Apache Commons DBCP连接池对比

Tomcat  JDBC连接池(org.apache.tomcat.jdbc.pool)与Apache Commons DBCP连接池 区别

 1.Commons DBCP 1.x是单线程。在分配对象或对象返回的时候,会锁定全部连接池。(不适用于Commons DBCP 2.x)

  2.Commons DBCP 1.x在逻辑cpu数量增加或者并发县城增加时,性能可能会变的很慢。高并发系统受到的影响会更加明显(不适用于Commons DBCP 2.x)

   3.Commons DBCP 拥有60多个类。tomcat-jdbc-pool核心只有8个类,而未来如果需求变更,那么tomcat JDBC连接池会改动更少。

   4.Commons DBCP使用静态接口,需要对应的jre需要对应的DBCP 版本,否则会抛出 NoSuchMethodException异常

    5.Tomcat JDBC连接池无需为库本身添加额外线程,就能获取异步连接。

    6.Tomcat JDBC连接池使用 javax.sql.PooledConnection接口获取底层连接

    7.Tomcat JDBC连接池 可以防止饥饿。如果池变空,线程将等待一个连接。当连接返回时,池就将唤醒正确的等待线程。

         


Tomcat  JDBC连接池  特点;

1. 支持高并发环境与多核/CPU 系统。
2. 接口的动态实现。支持 java.sql java.sql 接口(只要 JDBC 驱动),甚至在利用低版本的 JDK 来编译时。
3. 验证间隔时间。我们不必每次使用单个连接时都进行验证,可以在借出或归还连接时进行验证,只要不低
于我们所设定的间隔时间就行。
4. 只执行一次查询。当与数据库建立起连接时,只执行一次的可配置查询。这项功能对会话设置非常有用,
因为你可能会想在连接建立的整个时段内都保持会话。
5. 能够配置自定义拦截器。通过自定义拦截器来增强功能。可以使用拦截器来采集查询统计,缓存会话状
态,重新连接之前失败的连接,重新查询,缓存查询结果,等等。由于可以使用大量的选项,所以这种自
定义拦截器也是没有限制的,跟
java.sql /javax.sql 接口的 JDK 版本没有任何关系。
6. 高性能。
7. 它的实现简单,代码行数与源文件都非常少,这都有赖于从一开始研发它时,就把简洁当
做重中之重。对比一下
c3p0 ,它的源文件超过了 200 个(最近一次统计),而 Tomcat JDBC 核心只有 8
个文件,连接池本身则大约只有这个数目的一半,所以能够轻易地跟踪和修改可能出现的 Bug
8. 异步连接获取。可将连接请求队列化,系统返回 Future<Connection>
9. 更好地处理空闲连接。不再简单粗暴地直接把空闲连接关闭,而是仍然把连接保留在池中,通过更为巧妙
的算法控制空闲连接池的规模。
10. 可以控制连接应被废弃的时间:当池满了即废弃,或者指定一个池使用容差值,发生超时就进行废弃处
理。
11. 通过查询或语句来重置废弃连接计时器。允许一个使用了很长时间的连接不因为超时而被废弃。这一点是
通过使用
ResetAbandonedTimer 来实现的。
12. 经过指定时间后,关闭连接。与返回池的时间相类似。
13. 当连接要被释放时,获取 JMX 通知并记录所有日志。它类似于 removeAbandonedTimeout,但却不需
要采取任何行为,只需要报告信息即可。通过
suspectTimeout 属性来实现。
14. 可以通过 java.sql.Driverjavax.sql.DataSource javax.sql.XADataSource 获取连接。
通过 dataSource dataSourceJNDI 属性实现这一点。
15. 支持 XA 连接。

        ------- 转载请注明出处 

猜你喜欢

转载自blog.csdn.net/jacabe/article/details/79468338