读书人

c3p0,dbcp跟proxool数据库连接池比较(

发布时间: 2012-09-15 19:09:29 作者: rapoo

c3p0,dbcp和proxool数据库连接池比较(转)

,其中alias是为连接池自定义的别名]来获得connection;具体的可以参看proxooldoc下的UserGuide,或本文所附的示例代码。下面对连接池的特性配置作详细说明[这个是自己翻译的,不一定准确,有问题时请参看doc下的Properties~]

n?fatal-sql-exception

以逗号隔开的异常列表,当设置了此项之后,每当出现SQLException时都将与列表中异常项作比较,如果匹配则认为出现fatal异常,这将导致connection被丢弃,并且不论出现任何情况该异常将被重抛一次以通知用户发生的情况。默认值为null

n?fatal-sql-exception-wrapper-class

如果配置了fatal-sql-exception,则默认的操作是丢弃引起SQLException的原因而只是抛出原始异常。使用fatal-sql-exception-wrapper-class这个特性可以将SQLException包装到继承SQLException或RunTimeException的任何异常类里。Proxool提供了两个类供使用FatalSQLException和FatalRunTimeException;使用这两个类的话就将该选项设置为'org.logicalcobwebs.proxool.FatalSQLException'或者'org.logicalcobwebs.proxool.FatalRuntimeException'。默认值为null

n?house-keeping-sleep-time

proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁,默认值为30秒

n?house-keeping-test-sql

如果侦察线程发现闲置连接,则会使用这个SQL语句来对这些连接进行检查;这项设置的语句应该能够被很快的执行,例如查询当前时间[info.setProperty("proxool.house-keeping-test-sql", "selectCURRENT_DATE");]?。如果不设置则该选项被忽略

ninjectable-connection-interfaceinjectable-statement-interfaceinjectable-prepared-statement-interfaceinjectable-callable-statement-interface

n?jmx

如果此项设为true,则连接池将被以名称"Proxool:type=Pool,name=<alias>"注册为JMSServer的MBean。默认值为false

n?jmx-agent-id

当且仅当jmx选项设为true时使用,为以逗号分隔的连接持注册到的JMS代理名称列表;如果不设置则所有注册的JMXServer都将被使用

n?maximum-active-time

线程最大存活时间,超过此时间的线程将被守护线程kill掉,默认值为5分钟

n?maximum-connection-count

到数据库的最大连接数,超过了这个连接,再有请求时,就排在队列中等候,最大的等待请求数由simultaneous-build-throttle决定;默认值为15

n?maximum-connection-lifetime

连接最大存活时间,毫秒为单位,默认值为4小时

n?minimum-connection-count

不管是否被使用都保持开放的最小连接数,默认值为5

n?overload-without-refusal-lifetime

用来判断连接池状态,如果在此选项设置时间内(毫秒为单位)拒绝了连接,则认为过负载。默认值为60秒

n?prototype-count

最少保持的空闲连接数,注意与minimum-connection-count区分。默认值为0

n?simultaneous-build-throttle

最大的等待请求数,默认值为10

n?test-before-use

如果设为true则connection在使用前将以house-keeping-test-sql设置的语句测试,如果测试不通过则该connection被丢弃并会重新分配一个connection。默认为false

n?test-after-use

如果设为true则connection在关闭(放回连接池)前将以house-keeping-test-sql设置的语句测试,如果测试不通过connection将被丢弃。默认值为false

? 与其它连接池特性的设置方法不同,Proxool不提供相应的set方法,所有特性都要以诸如info.setProperty("proxool.jmx","false");方式设定

??上述特性的可设置性已在代码中验证,具体性能是否能实现有待实际验证

? Proxool与DBCP以及C3P0的性能比较,网上众说纷纭,有待我们自己的测试;其中http://www.oioj.net/blog/user1/2853/archives/2006/298381.shtml这篇文章对proxool和DBCP做了性能评测,其方法值得我们测试借鉴

读书人网 >其他数据库

热点推荐