天天看点

Druid、BoneCP、DBCP、C3P0等主流数据库对比(本文完全转载)

本文内容为完全转载,

转载原因,转载是为了更好的查看。

关键功能

druid

bonecp

dbcp

c3p0

proxool

jboss

lru

pscache

pscache-oracle-optimized

exceptionsorter

监控

扩展

lru是一个性能关键指标,特别oracle,每个connection对应数据库端的一个进程,如果数据库连接池遵从lru,有助于数据库服务器优化,这是重要的指标。在测试中,druid、dbcp、proxool、jboss是遵守lru的。bonecp、c3p0则不是。bonecp在mock环境下性能可能好,但在真实环境中则就不好了。

pscache是数据库连接池的关键指标。在oracle中,类似select name from user where id = ?这样的sql,启用pscache和不启用pscache的性能可能是相差一个数量级的。proxool是不支持pscache的数据库连接池,如果你使用oracle、sql server、db2、sybase这样支持游标的数据库,那你就完全不用考虑proxool。

oracle 10系列的driver,如果开启pscache,会占用大量的内存,必须做特别的处理,启用内部的enterimplicitcache等方法优化才能够减少内存的占用。这个功能只有druiddatasource有。如果你使用的是oracle jdbc,你应该毫不犹豫采用druiddatasource。

exceptionsorter是一个很重要的容错特性,如果一个连接产生了一个不可恢复的错误,必须立刻从连接池中去掉,否则会连续产生大量错误。这个特性,目前只有jbossdatasource和druid实现。druid的实现参考自jbossdatasource。

druiddatasource自身提供有notemptywaitcount、pscahchehitcount等有用的监控属性,通过配置statfilter能够监控sql的执行情况。

druiddatasource提供基于filter-chain模式的模式的扩展