DBCP2配置详细说明(中文翻译)

http://blog.csdn.net/kerafan/article/details/50382998

common-dbcp2数据库连接池参数说明

由于commons-dbcp所用的连接池出现版本升级,因此commons-dbcp2中的数据库池连接配置也发生了变化,具体的参数配置说明如下:


参数                             描述

username
(用户名)
通过JDBC建立一个连接所需的用户名
password
(密码)
通过JDBC建立一个连接所需的密码
url
(JDBC连接串)
通过JDBC建立一个连接所需的URL
driverClassName
(JDBC驱动程序)
所使用的JDBC驱动的类全名
connectionProperties
(连接属性)
连接参数是在建立一个新连接时发送给JDBC驱动的
字符串的格式必须是[参数名=参数值;]
提示:用户名和密码属性是需要明确指出的,所以这两个参数不需要包含在这里

参数                                       缺省值           描述

defaultAutoCommit
(自动提交)
JDBC驱动的缺省值 通过这个池创建连接的默认自动提交状态。如果不设置,则setAutoCommit 方法将不被调用。
defaultReadOnly
(只读设置)
JDBC驱动的缺省值 通过这个池创建连接的默认只读状态。如果不设置,则setReadOnly  方法将不被调用。(部分驱动不支持只读模式,如:Informix)
defaultTransactionIsolation
(事务隔离级别)
JDBC驱动的缺省值 通过这个池创建连接的默认事务隔离策略,设置值为下列中的某一个: (参考 javadoc)(看笔记中另外一篇事务属性小结)

  • NONE
  • READ_COMMITTED
  • READ_UNCOMMITTED
  • REPEATABLE_READ
  • SERIALIZABLE
defaultCatalog
(目录,类似于与模式名,但比模式名更加抽象,Oracle、MySQL不支持,其他,MS SQL Server = 数据库名)
  通过这个池创建连接的默认缺省的catalog 
cacheState
(缓存状态)
true 如果设置为true,池化的连接将在第一次读或写,以及随后的写的时候缓存当前的只读状态和自动提交设置。这样就省去了对getter的任何进一步的调用时对数据库的额外查询。如果直接访问底层连接,只读状态和/或自动提交设置改变缓存值将不会被反映到当前的状态,在这种情况下,应该将该属性设置为false以禁用缓存。
defaultQueryTimeout
(查询超时时间)
null 如果值不为null,指定一个整数值,用于在创建Statement时,指定为查询超时时间。如果设置为null,则使用驱动程序默认设置。
enableAutocommitOnReturn
(连接归还到池时,设置为自动提交)
true 如果设置为true,则连接被归还到连接池时,会指定设置为autoCommit = true
rollbackOnReturn
(连接归还到池时,回滚所有操作)
true 如果设置为true,则连接被归还到连接池时,会自动执行一次rollback();前提是自动提交 = true and 非只读。

参数                         缺省值                 描述

initialSize
(初始连接数)
0 当这个池被启动时初始化的创建的连接个数,起始生效版本:1.2
maxTotal
(最大活动连接数)
8 可以在这个池中同一时刻被分配的有效连接数的最大值,如设置为负数,则不限制
maxIdle
(最大空闲连接数)
8 在池中,可以保持空闲状态的最大连接数,超出设置值之外的空闲连接在归还到连接池时将被释放,如设置为负数,则不限制
minIdle
(最小空闲连接数)
0 可以在池中保持空闲的最小连接数,低于设置值时,空闲连接将被创建,以努力保持最小空闲连接数>=minIdle,如设置为0,则不创建
这里设置的数值生效的前提是:timeBetweenEvictionRunsMillis(空闲对象驱逐线程运行时的休眠毫秒数)被设置为正数。
maxWaitMillis
(从连接池获取一个连接时,最大的等待时间)
indefinitely
(不确定)
设置为-1时,如果没有可用连接,连接池会一直无限期等待,直到获取到连接为止。
如果设置为N(毫秒),则连接池会等待N毫秒,等待不到,则抛出异常。

 提示: 如果在高负载的系统中将maxIdle的值设置的很低,则你可能会发现在一个新的连接刚刚被创建的时候就立即被关闭了。这是活跃的线程及时关闭连接要比那些打开连接的线程要快,导致空闲的连接数大于maxIdle。高负载系统中maxIdle的最合适的配置值是多样的,但是缺省值是一个好的开始点。


参数                                               缺省值          描述

validationQuery
(确认查询SQL)

validationQueryTimeout
(确认查询SQL的超时时间)

no timeout

在连接池返回连接给调用者前用来进行连接校验的查询sql。如果指定,则这个查询必须是一个至少返回一行数据的SQL SELECT语句。如果没有指定,则连接将通过调用isValid() 方法进行校验。

确认连接有效SQL的执行查询超时时间(秒)。如果设置为正数,那么会传递给JDBC驱动的setQueryTimeOut()方法,这个设置对执行【确认有效查询SQL】起作用。

testOnCreate
(连接创建后,马上验证有效性)
false 指明对象在创建后是否需要验证是否有效,如果对象验证失败,则触发对象创建的租借尝试将失败。
testOnBorrow
(从连接池获取一个连接时,验证有效性)
true 指明在从池中租借对象时是否要进行验证有效,如果对象验证失败,则对象将从池子释放,然后我们将尝试租借另一个
testOnReturn
(连接被归还到连接池时,验证有效性)
false 指明在将对象归还给连接池前是否需要校验。
testWhileIdle
(连接空闲时,验证有效性)
false 指明对象是否需要通过对象驱逐者进行校验(如果有的话),假如一个对象验证失败,则对象将被从池中释放。
timeBetweenEvictionRunsMillis
(空闲对象驱逐线程运行时的休眠毫秒数)
-1 空闲对象驱逐线程运行时的休眠毫秒数,如果设置为非正数,则不运行空闲对象驱逐线程。
numTestsPerEvictionRun
(在每个空闲对象驱逐线程运行过程中中进行检查的对象个数)
3 在每个空闲对象驱逐线程运行过程中中进行检查的对象个数。(如果有的话)
minEvictableIdleTimeMillis
(空闲的连接最低要待N毫秒后,才会被释放)
1000 * 60 * 30
(30分)
符合对象驱逐条件的对象在池中最小空闲毫秒总数(如果有的话)
softMiniEvictableIdleTimeMillis
(空闲的连接最低要待N毫秒后,才会被释放,但有额外条件)
-1 符合对象驱逐条件的对象在池中最小空闲毫秒总数,额外的条件是池中至少保留有minIdle所指定的个数的连接。当miniEvictableIdleTimeMillis 被设置为一个正数,空闲连接驱逐者首先检测miniEvictableIdleTimeMillis,当空闲连接被驱逐者访问时,首先与miniEvictableIdleTimeMillis 所指定的值进行比较(而不考虑当前池中的空闲连接数),然后比较softMinEvictableIdleTimeMillis所指定的连接数,包括minIdle条件。
maxConnLifetimeMillis
(一个连接的最大存活毫秒数)
-1 一个连接的最大存活毫秒数。如果超过这个时间,则连接在下次激活、钝化、校验时都将会失败。如果设置为0或小于0的值,则连接的存活时间是无限的。
connectionInitSqls
(连接被第一次创建时,执行的初始化SQL)
null 在第一次创建时用来初始化物理连接的SQL语句集合。这些语句只在配置的连接工厂创建连接时被执行一次。
lifo
(后进先出)
true 设置为true表明连接池(如果池中有可用的空闲连接时)将返回最后一次使用的租借对象(最后进入)。
设置为false则表明池将表现为FIFO队列(先进先出)—将会按照它们被归还的顺序从空闲连接实例池中获取连接
logExpiredConnections
(一个过期的连接被连接池关闭时,写日志标识)
true 如果连接存货时间超过maxConnLifetimeMillis,连接将被连接池会抽,此时默认输出日志。如果设置为false,这不会写日志。


参数                                             缺省值                 描述

poolPreparedStatements
(设置该连接池的预处理语句池是否生效)
false 设置该连接池的预处理语句池是否生效
maxOpenPreparedStatements
(可以在语句池中同时分配的最大语句数)
unlimited 可以在语句池中同时分配的最大语句数。设置为负数则不限制。

 这个设置同时作用于预处理语句池. 当一个可用的语句池被创建给每一个连接时,通过以下方法创建的预处理语句将被池化。

  • public PreparedStatement prepareStatement(String sql)
  • public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency)

 提示 -要确保你的连接会留下一些资源给其他语句。池化预处理语句可能会在数据库中保持他们的游标,可能会引起连接的游标越界,尤其是maxOpenPreparedStatements的值被设置为默认值(无限的),而且一个应用程序可能会为每个连接打开大量不同的预处理语句。为了避免这个问题maxOpenPreparedStatements应该被设置为一个小于连接可以打开的最大游标数的值。


参数                                                         缺省值     描述

accessToUnderlyingConnectionAllowed
(控制PoolGuard是否可以访问底层连接 )
false 控制PoolGuard是否可以访问底层连接 

如果允许访问的话,使用如下代码结构:

    Connection conn = ds.getConnection();    Connection dconn =((DelegatingConnection) conn).getInnermostDelegate();    ...    conn.close()

 默认值为false,这是一个有着潜在风险的操作,使用不当可能会导致非常严重的后果。(在守护连接已被关闭的情况下,关闭底层连接或者继续使用它),只有在你需要直接访问驱动的特有扩展是可以谨慎使用。

 NOTE: 除了最原始那个之外,不要关闭底层连接


参数                                       缺省值         描述


removeAbandonedOnMaintenance
removeAbandonedOnBorrow
()
false 标记是否删除超过removeAbandonedTimout所指定时间的被遗弃的连接。
如果设置为true,则一个连接在超过removeAbandonedTimeout所设定的时间未使用即被认为是应该被抛弃并应该被移除的。
创建一个语句,预处理语句,可调用语句或使用它们其中的一个执行查询(使用执行方法中的某一个)会重新设置其父连接的lastUsed 属性。
在写操作较少的应用程序中将该参数设置为true可以将数据库连接从连接关闭失败中恢复。
removeAbandonedTimeout
(一个被抛弃连接可以被移除的超时时间)
300(秒) 一个被抛弃连接可以被移除的超时时间,单位为秒
logAbandoned false 标志是否为应用程序中遗弃语句或连接的代码开启日志堆栈追踪。
因为一个堆栈跟踪已被创建,被抛弃的语句和连接相关的日志将被覆盖到打开每个连接或者创建一个Statement时

如果你启用了removeAbandoned,则一个连接被池回收再利用是可能的,因为它被认为是已遗弃 在(getNumIdle() < 2) and (getNumActive() > getMaxTotal() - 3)成立时,这个机制将被触发。

 例如, maxTotal=20 ,这里有18个活跃连接,一个限制连接,将触发 "removeAbandoned"。但是只有在活动连接超过 "removeAbandonedTimeout" 所指定的秒数内未使用才会被删除(默认为300秒)。遍历一个结果集并不被统计为被使用,创建一个语句,预处理语句,可调用语句或使用它们其中的一个执行查询(使用执行方法中的某一个)会重新设置其父连接的lastUsed 属性。

Parameter Default Description
fastFailValidation
(验证快速失败)
false 如果发生致命的异常,验证语句会快速失败。而不会再执行isValid(),也不再去执行验证查询语句。致命的异常码(SQL_STATE)指以下:

  • 57P01 (ADMIN SHUTDOWN)
  • 57P02 (CRASH SHUTDOWN)
  • 57P03 (CANNOT CONNECT NOW)
  • 01002 (SQL92 disconnect error)
  • JZ0C0 (Sybase disconnect error)
  • JZ0C1 (Sybase disconnect error)
  • Any SQL_STATE code that starts with "08"

想覆盖异常码,请参看 disconnectionSqlCodes 

disconnectionSqlCodes
(异常码)
null 以逗号分割的SQL_STATE码,fastFailValidation 为true时,才会生效。

2
时间: 2024-10-24 23:49:34

DBCP2配置详细说明(中文翻译)的相关文章

OS X系统 手势终极设置方法+BetterTouchTool详细设置中文翻译

相信用过罗技G系鼠标的同学都对罗技鼠标强大的自定义功能留下过深刻的印象.对于那些表示只愿追求简单拒绝功能复杂而去使用三键鼠标的同学,我很怀疑他们是否真正了解到多键鼠标或手势功能对电脑操作便捷上带来的重大意义.复制粘贴,前进后退,关闭等等这些操作看似简单,但有的需要键盘配合,有的需要右手精确操作(随着屏幕越来越大,鼠标为点击关闭等按钮而滑行的距离越来越长),如果这些操作都能由右手在盲操作的情况下完成,那将给电脑的使用体验带来巨大的变化. 在pc上一直使用逻辑G300,完美的官方驱动软件给小小的G3

.NET开源类库Nini手册(INI、XML、注册表的配置应用)-中文翻译

目录 1.简介 1.1什么是应用程序配置数据? 1.2问题 1.3介绍Nini 2.入门 2.1一个简单的例子 2.2默认值 2.3设置.保存和删除键 2.4添加和删除配置 2.5键值扩展 3.高级主题 3.1合并 3.2价值别名 3.3键值清单 3.4活动 4.配置类型 4.1 Ini文件 4.2 XML文件 4.3 Windows注册表配置 4.4 .NET配置文件 4.5命令行(Argv)配置 5.有效使用Nini 5.1多个用户的处理配置 5.2在数据库中存储配置数据 5.3自动创建配置

Spring Framework Reference Documentation 3.2.8.RELEASE 第23章中文翻译

23. JMS (Java Message Service) [中文翻译 by [email protected]] 23.1 介绍 Spring提供了一个JSM集成框架,简化了JMS API的使用.这点很像Spring对JDBC的集成. JMS大致提供生产消息和消费消息两类功能.JmsTemplate类用来生产消息和同步接收消息[译注:接收消息也就是消费消息].为了异步接收消息(异步接收消息类似于JavaEE的消息驱动Bean(Message-Driven Bean,MDB),Spring提供

(转载)saltstack master配置文件中文翻译

原文出处:http://blog.coocla.org/301.html Salt系统的配置是令人惊讶的简单,对于salt的两个系统都有各自的配置文件,salt-master是通过一个名为master的文件配置,salt-minion是通过一个名为minion的文件配置. salt-master的配置文件位于/etc/salt/master,可用选项如下(不全): 1.主配置####################### interface默认值:0.0.0.0(所有的网络地址接口)绑定到本地的

中文翻译为&quot;具象状态传输&quot;的RESTful的架构风格和设计思想

本文标签:  具象状态传输 RESTful架构 RESTful理解 REST   服务器 REST 定义了一组体系架构原则,您可以根据这些,包括使用不同语言编写的客户端如何通过 HTTP 处理和传输资源状态.所以在事实上,REST 对 Web的影响非常大,由于其使用相当方便,已经普遍地取代了基于 SOAP 和 WSDL 的接口设计.在多年以后的今天,REST的主要框架已经开始雨后春笋般的出现. REST(Representational State Transfer ),有中文翻译为"具象状态传

STM32F0xx_FLASH编程(片内)配置详细过程

Ⅰ.概述 关于数据的储存,我觉得编程的人基本上都会使用到,只是看你储存在哪里.STM32的芯片内部FLASH都是可以进行编程的,也就是说可以拿来储存数据.但是,很多做一些小应用程序开发的人都没有利用好这个功能,而是单独外接一个EEPROM或者FLASH,我觉得有些情况下(小数据.不常改动)这是对资源的一种极大浪费. 关于使用内部FLASH进行编程,网上也有很多人这么说:1.内部FLASH的读写次数有限:2.内部FLASH会破坏程序.这些说法确实存在一定道理,对于次数,10W次,我想这个次数除非你

《Introduction to Tornado》中文翻译计划——第五章:异步Web服务

http://www.pythoner.com/294.html 本文为<Introduction to Tornado>中文翻译,将在https://github.com/alioth310/itt2zh上面持续更新,本文内容可能不是最新状态,请在GitHub上获得最新版本. 本文也可在http://demo.pythoner.com/itt2zh上进行格式化的预览. 第五章:异步Web服务 到目前为止,我们已经看到了许多使Tornado成为一个Web应用强有力框架的功能.它的简单性.易用性

STM32F0xx_GPIO配置详细过程

前言 对于初学STM32的人来说,很多基础的知识没有掌握,这些基础知识就成为阻挡他们入门的门槛.因此,今天也把基础的知识分享出来,带领那些还没有迈过这个门槛的人入门. 今天总结“GPIO配置详细”,以F0标准外设库初始化结构体来重点讲解.接着昨天“新建软件工程详细过程”来进行讲解,今天分两大部分内容总结.工程描述.IO配置源代码详细讲解. 本着免费分享的原则,如果你觉得分享内容对你有用,请关注微信公众号“EmbeddDeveloper”还有更多精彩内容等着你.   下载 ST标准外设库和参考手册

BitTorrent DHT 协议中文翻译

前言 做了一个磁力链接和BT种子的搜索引擎 {Magnet & Torrent},因此把 DHT 协议重新看了一遍. 原文:DHT Protocol 译文:BitTorrent DHT 协议中文翻译 BitTorrent 使用"分布式哈希表"(DHT)来为无 tracker 的种子(torrents)存储 peer 之间的联系信息.这样每个 peer 都成了 tracker.这个协议基于 Kademila[1] 网络并且在 UDP 上实现. 请注意本文档中使用的术语,以免混乱.