DBCP|C3P0参数详解

1.<!-- 数据源1 -->
2. <bean id="dataSource"
3. class="org.apache.commons.dbcp.BasicDataSource"
4. destroy-method="close">
5. <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
6. <property name="url" value="jdbc:mysql://192.168.0.109:3306/test? useUnicode=true&characterEncoding=UTF-8"/>
7. <property name="username" value="root"/>
8. <property name="password" value="root"/>
9. <!--maxActive: 最大连接数量-->
10. <property name="maxActive" value="150"/>
11. <!--minIdle: 最小空闲连接-->
12. <property name="minIdle" value="5"/>
13. <!--maxIdle: 最大空闲连接-->
14. <property name="maxIdle" value="20"/>
15. <!--initialSize: 初始化连接-->
16. <property name="initialSize" value="30"/>
17. <!-- 连接被泄露时是否打印 -->
18. <property name="logAbandoned" value="true"/>
19. <!--removeAbandoned: 是否自动回收超时连接-->
20. <property name="removeAbandoned" value="true"/>
21. <!--removeAbandonedTimeout: 超时时间(以秒数为单位)-->
22. <property name="removeAbandonedTimeout" value="10"/>
23. <!--maxWait: 超时等待时间以毫秒为单位-->
24. <property name="maxWait" value="1000"/>
25. <!-- 在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位. -->
26. <property name="timeBetweenEvictionRunsMillis" value="10000"/>
27. <!-- 在每次空闲连接回收器线程(如果有)运行时检查的连接数量 -->
28. <property name="numTestsPerEvictionRun" value="10"/>
29. <!-- 1000 * 60 * 30 连接在池中保持空闲而不被空闲连接回收器线程-->
30. <property name="minEvictableIdleTimeMillis" value="10000"/>
31. <property name="validationQuery" value="SELECT NOW() FROM DUAL"/>
32. </bean>

 

参数 描述
username 传递给JDBC驱动的用于建立连接的用户名
password 传递给JDBC驱动的用于建立连接的密码
url 传递给JDBC驱动的用于建立连接的URL
driverClassName 使用的JDBC驱动的完整有效的java 类名
connectionProperties 当建立新连接时被发送给JDBC驱动的连接参数,
格式必须是 [propertyName=property;]*
注意 :参数user/password将被明确传递,所以不需要包括在这里。

参数 默认值 描述
defaultAutoCommit true 连接池创建的连接的默认的auto-commit状态
defaultReadOnly driver default 连接池创建的连接的默认的read-only状态.
如果没有设置则setReadOnly方法将不会被调用. (某些驱动不支持只读模式,比如:Informix)
defaultTransactionIsolation driver default 连接池创建的连接的默认的TransactionIsolation状态.
下面列表当中的某一个: (参考javadoc)

* NONE
* READ_COMMITTED
* READ_UNCOMMITTED
* REPEATABLE_READ
* SERIALIZABLE

defaultCatalog 连接池创建的连接的默认的catalog

参数 默认值 描述
initialSize 0 初始化连接:连接池启动时创建的初始化连接数量,1.2版本后支持
maxActive 8 最大活动连接:连接池在同一时间能够分配的最大活动连接的数量,
如果设置为非正数则表示不限制
maxIdle 8 最大空闲连接:连接池中容许保持空闲状态的最大连接数量,超过的空闲连接将被释放,
如果设置为负数表示不限制
minIdle 0 最小空闲连接:连接池中容许保持空闲状态的最小连接数量,低于这个数量将创建新的连接,
如果设置为0则不创建
maxWait 无限 最大等待时间:当没有可用连接时,连接池等待连接被归还的最大时间(以毫秒计数),
超过时间则抛出异常,如果设置为-1表示无限等待

参数 默认值 描述
validationQuery SQL查询,用来验证从连接池取出的连接,在将连接返回给调用者之前.如果指定,
则查询必须是一个SQL SELECT并且必须返回至少一行记录
testOnBorrow true 指明是否在从池中取出连接前进行检验,如果检验失败,
则从池中去除连接并尝试取出另一个.
注意: 设置为true后如果要生效,validationQuery参数必须设置为非空字符串
testOnReturn false 指明是否在归还到池中前进行检验
注意: 设置为true后如果要生效,validationQuery参数必须设置为非空字符串
testWhileIdle false 指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,
则连接将被从池中去除.
注意: 设置为true后如果要生效,validationQuery参数必须设置为非空字符串
timeBetweenEvictionRunsMillis -1 在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位.
如果设置为非正数,则不运行空闲连接回收器线程
numTestsPerEvictionRun 3 在每次空闲连接回收器线程(如果有)运行时检查的连接数量
minEvictableIdleTimeMillis 1000 * 60 * 30 连接在池中保持空闲而不被空闲连接回收器线程
(如果有)回收的最小时间值,单位毫秒

参数 默认值 描述
poolPreparedStatements false 开启池的prepared statement 池功能
maxOpenPreparedStatements 不限制 statement池能够同时分配的打开的statements的最大数量,
如果设置为0表示不限制


这里可以开启PreparedStatements池. 当开启时, 将为每个连接创建一个statement池,
并且被下面方法创建的PreparedStatements将被缓存起来:
* public PreparedStatement prepareStatement(String sql)
* public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency)
注意: 确认连接还有剩余资源可以留给其他statement
参数 默认值 描述
accessToUnderlyingConnectionAllowed false 控制PoolGuard是否容许获取底层连接


如果容许则可以使用下面的方式来获取底层连接:
Connection conn = ds.getConnection();
Connection dconn = ((DelegatingConnection) conn).getInnermostDelegate();
...
conn.close();

默认false不开启, 这是一个有潜在危险的功能, 不适当的编码会造成伤害.
(关闭底层连接或者在守护连接已经关闭的情况下继续使用它).请谨慎使用,
并且仅当需要直接访问驱动的特定功能时使用.
注意: 不要关闭底层连接, 只能关闭前面的那个.
参数 默认值 描述
removeAbandoned false 标记是否删除泄露的连接,如果他们超过了removeAbandonedTimout的限制.
如果设置为true, 连接被认为是被泄露并且可以被删除,如果空闲时间超过removeAbandonedTimeout.
设置为true可以为写法糟糕的没有关闭连接的程序修复数据库连接.
removeAbandonedTimeout 300 泄露的连接可以被删除的超时值, 单位秒
logAbandoned false 标记当Statement或连接被泄露时是否打印程序的stack traces日志。
被泄露的Statements和连接的日志添加在每个连接打开或者生成新的Statement,
因为需要生成stack trace。


如果开启"removeAbandoned",那么连接在被认为泄露时可能被池回收. 这个机制在(getNumIdle() < 2)
and (getNumActive() > getMaxActive() - 3)时被触发.
举例当maxActive=20, 活动连接为18,空闲连接为1时可以触发"removeAbandoned".
但是活动连接只有在没有被使用的时间超过"removeAbandonedTimeout"时才被删除,默认300秒.
在resultset中游历不被计算为被使用.

 

 

<c3p0-config>
<default-config>
<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
<property name="acquireIncrement">3</property>

<!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 -->
<property name="acquireRetryAttempts">30</property>

<!--两次连接中间隔时间,单位毫秒。Default: 1000 -->
<property name="acquireRetryDelay">1000</property>

<!--连接关闭时默认将所有未提交的操作回滚。Default: false -->
<property name="autoCommitOnClose">false</property>

<!--c3p0将建一张名为Test的空表,并使用其自带的查询语句进行测试。如果定义了这个参数那么
属性preferredTestQuery将被忽略。你不能在这张Test表上进行任何操作,它将只供c3p0测试
使用。Default: null-->
<property name="automaticTestTable">Test</property>

<!--获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效
保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试
获取连接失败后该数据源将申明已断开并永久关闭。Default: false-->
<property name="breakAfterAcquireFailure">false</property>

<!--当连接池用完时客户端调用getConnection()后等待获取新连接的时间,超时后将抛出
SQLException,如设为0则无限期等待。单位毫秒。Default: 0 -->
<property name="checkoutTimeout">100</property>

<!--通过实现ConnectionTester或QueryConnectionTester的类来测试连接。类名需制定全路径。
Default: com.mchange.v2.c3p0.impl.DefaultConnectionTester-->
<property name="connectionTesterClassName"></property>

<!--指定c3p0 libraries的路径,如果(通常都是这样)在本地即可获得那么无需设置,默认null即可
Default: null-->
<property name="factoryClassLocation">null</property>

<!--Strongly disrecommended. Setting this to true may lead to subtle and bizarre bugs.
(文档原文)作者强烈建议不使用的一个属性-->
<property name="forceIgnoreUnresolvedTransactions">false</property>

<!--每60秒检查所有连接池中的空闲连接。Default: 0 -->
<property name="idleConnectionTestPeriod">60</property>

<!--初始化时获取三个连接,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
<property name="initialPoolSize">3</property>

<!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
<property name="maxIdleTime">60</property>

<!--连接池中保留的最大连接数。Default: 15 -->
<property name="maxPoolSize">15</property>

<!--JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements
属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。
如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0-->
<property name="maxStatements">100</property>

<!--maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。Default: 0 -->
<property name="maxStatementsPerConnection"></property>

<!--c3p0是异步操作的,缓慢的JDBC操作通过帮助进程完成。扩展这些操作可以有效的提升性能
通过多线程实现多个操作同时被执行。Default: 3-->
<property name="numHelperThreads">3</property>

<!--当用户调用getConnection()时使root用户成为去获取连接的用户。主要用于连接池连接非c3p0
的数据源时。Default: null-->
<property name="overrideDefaultUser">root</property>

<!--与overrideDefaultUser参数对应使用的一个参数。Default: null-->
<property name="overrideDefaultPassword">password</property>

<!--密码。Default: null-->
<property name="password"></property>

<!--定义所有连接测试都执行的测试语句。在使用连接测试的情况下这个一显著提高测试速度。注意:
测试的表必须在初始数据源的时候就存在。Default: null-->
<property name="preferredTestQuery">select id from test where id=1</property>

<!--用户修改系统配置参数执行前最多等待300秒。Default: 300 -->
<property name="propertyCycle">300</property>

<!--因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的
时候都将校验其有效性。建议使用idleConnectionTestPeriod或automaticTestTable
等方法来提升连接测试的性能。Default: false -->
<property name="testConnectionOnCheckout">false</property>

<!--如果设为true那么在取得连接的同时将校验连接的有效性。Default: false -->
<property name="testConnectionOnCheckin">true</property>

<!--用户名。Default: null-->
<property name="user">root</property>

<!--早期的c3p0版本对JDBC接口采用动态反射代理。在早期版本用途广泛的情况下这个参数
允许用户恢复到动态反射代理以解决不稳定的故障。最新的非反射代理更快并且已经开始
广泛的被使用,所以这个参数未必有用。现在原先的动态反射与新的非反射代理同时受到
支持,但今后可能的版本可能不支持动态反射代理。Default: false-->
<property name="usesTraditionalReflectiveProxies">false</property>

<property name="automaticTestTable">con_test</property>
<property name="checkoutTimeout">30000</property>
<property name="idleConnectionTestPeriod">30</property>
<property name="initialPoolSize">10</property>
<property name="maxIdleTime">30</property>
<property name="maxPoolSize">25</property>
<property name="minPoolSize">10</property>
<property name="maxStatements">0</property>
<user-overrides user="swaldman">
</user-overrides>
</default-config>
<named-config name="dumbTestConfig">
<property name="maxStatements">200</property>
<user-overrides user="poop">
<property name="maxStatements">300</property>
</user-overrides>
</named-config>
</c3p0-config>

 

转载于:https://www.cnblogs.com/core404/p/5785968.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260835.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

没有与参数列表匹配的 重载函数 strcpy_s 实例_Zemax光学设计实例(84)Ftheta扫描平场透镜的设计...

导论&#xff1a;F-theta透镜又叫激光扫描聚焦镜&#xff0c;是激光加工行业必不可少的光学元件之一。对于理想薄透镜&#xff0c;光束的偏转角度与轨迹位置的关系为YF*tan(θ)&#xff0c;这种非线性关系会使得匀速偏转的振镜扫描速度与轨迹运动速度是不匹配的&#xff0c;导致…

MongoDB学习笔记(一)--基础

Insert MongoDB在执行插入时&#xff0c;首先会将插入的数据转换成BSON格式。然后MongoDB数据库会对BSON进行解剖&#xff0c;并检查是否存在_id建。 >doc {"_id" : 1…

第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波4 - 分段线性变换 - 对比度拉伸

目录分段线性变换对比度拉伸最大最小值拉伸分段线性变换 优点 形式可以任意复杂 缺点 要求用户输入很多参数 对比度拉伸 光照不足、成像传感器的动态范围偏小、图像获取过程中镜头孔径的设置错误 点(r1,s1)和点(r2,s2)(r_1, s_1)和点(r_2, s_2)(r1​,s1​)和点(r2​,s2​…

2017网易内推编程题(判断单词):解答代码

2019独角兽企业重金招聘Python工程师标准>>> 小易喜欢的单词具有以下特性&#xff1a; 1.单词每个字母都是大写字母 2.单词没有连续相等的字母 3.单词没有形如“xyxy”(这里的x&#xff0c;y指的都是字母&#xff0c;并且可以相同)这样的子序列&#xff0c;子序列可…

Debian下IPv6设定主地址 Set primary IPv6 address under Debian Linux

Linux下选择IPv6主地址是按照一定规则来的 #RFC3484 (davidc) Prefer same address. (i.e. destination is local machine) Prefer appropriate scope. (i.e. smallest scope shared with the destination) Avoid deprecated addresses. Prefer home addresses.Prefer outgo…

iphone查看删除的短信_想要恢复已经删除的的短信怎么办?

阅读本文前&#xff0c;请您先点击上面的蓝色字体&#xff0c;再点击“关注”&#xff0c;这样您就可以继续免费收到文章了。每天都有分享&#xff0c;完全是免费订阅&#xff0c;请放心关注。 …

获取套接字相关联信息

前言 知道套接字描述符&#xff0c;如何获取这个套接字连接的相关信息呢&#xff1f;显然&#xff0c;这是一个必须要清楚的问题。 获取本地协议信息 函数原型&#xff1a;int getsockname ( int sockfd, struct sockaddr *localaddr, socklen_t *addrlen ) 函数功能&#xff1…

第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波5 - 分段线性变换 - 灰度级分层

目录灰度级分层灰度级分层 二值图像 将感兴趣范围内的所有灰显示为一个值&#xff08;白色&#xff09;&#xff0c;而将其它灰度值显示为另一个值&#xff08;黑色&#xff09; 其他灰度级不变 使期望的灰度范围变量&#xff08;或变暗&#xff09;&#xff0c;但保持图像中…

Oracle查看锁表

查看锁表进程SQL语句1&#xff1a; select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.object_name, lo.locked_mode from v$locked_object lo, dba_objects ao, v$session sess where ao.object_id lo.object_id and lo.session_id sess.sid; 查看锁…

SQL Server聚集索引的选择

先声明文章非原创&#xff0c;摘自博客园&#xff1a;http://www.cnblogs.com/CareySon/archive/2012/03/06/2381582.html 简介 在SQL Server中&#xff0c;数据是按页进行存放的。而为表加上聚集索引后&#xff0c;SQL Server对于数据的查找就是按照聚集索引的列作为关键字进行…

c++突破网关屏蔽_为什么加了屏蔽罩,测试效果反而不好?

来自专治PCB疑难杂症微信群群友(群友突破1200人啦&#xff0c;文末添加杨老师微信号&#xff0c;可添加入群)的问题讨论&#xff1a;设计时我加了屏蔽罩&#xff0c;结果在测试的时候不加屏蔽罩的效果要比加了屏蔽罩的效果好&#xff0c;这是为何&#xff1f;跟PCB设计的屏蔽罩…

第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波6 - 分段线性变换 - 比特平面分层

目录比特平面分层比特平面分层 在一幅256级灰度图像中&#xff0c;图像的值是由8比特&#xff08;1字节&#xff09;组成的 def convert_bin(data, n):"""convert decimal to binary, return n th bit, 0 if bit value 0 else 1""" #---------…

与众不同 windows phone (5) - Chooser(选择器)

与众不同 windows phone (5) - Chooser&#xff08;选择器&#xff09; 原文:与众不同 windows phone (5) - Chooser&#xff08;选择器&#xff09;[索引页][源码下载] 与众不同 windows phone (5) - Chooser&#xff08;选择器&#xff09;作者&#xff1a;webabcd介绍与众不…

iOS GCD

from&#xff1a;http://www.cnblogs.com/dsxniubility/p/4296937.html 一般&#xff1a; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{// 耗时操作dispatch_async(dispatch_get_main_queue(), ^{// 更新UI});}); 本文是对以往学习的多线…

c++和java哪个难_2020 年 11 月编程语言排行榜,Python 超越 Java ?

来源&#xff1a;tiobe.com/tiobe-index/November-2020TIOBE 2020 年 11 月份的编程语言排行榜已经公布&#xff0c;官方的标题是&#xff1a;Python 势如破竹&#xff0c;超越 Java。题外话: 目前小哈正在个人博客(新搭建的网站&#xff0c;域名就是犬小哈的拼音) www.quanxia…

C# 温故而知新:Stream篇(七)

C# 温故而知新&#xff1a;Stream篇&#xff08;七&#xff09; NetworkStream 目录&#xff1a; NetworkStream的作用简单介绍下TCP/IP 协议和相关层次简单说明下 TCP和UDP的区别简单介绍下套接字&#xff08;Socket&#xff09;的概念简单介绍下TcpClient,TcpListener,IPEndP…

第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波7 - 直方图处理 - 直方图、归一化直方图

目录直方图处理直方图处理 令rk,k0,1,2,…,L−1r_k, k0, 1, 2, \dots, L-1rk​,k0,1,2,…,L−1表于一幅LLL级灰度数字图像f(x,y)f(x,y)f(x,y)的灰度。fff的非归一化直方图定义为&#xff1a; h(rk)nk,k0,1,2,…,L−1(3.6)h(r_{k}) n_{k}, \quad k 0, 1, 2, \dots, L-1 \tag{…

Xamarin Android提示找不到资源属性定义

为什么80%的码农都做不了架构师&#xff1f;>>> Xamarin Android提示找不到资源属性定义 错误信息&#xff1a;”Resource.Attribute”未包含”actonBarSize”的定义 Xamarin Android经常会出现找不到资源属性的错误。遇到这种问题&#xff0c;建议先清理解决方法和…

Google Chrome保存插件方法

1、拷贝下面地址到记事本 https://clients2.google.com/service/update2/crx?responseredirect&xid%3D~~~~%26uc 2、打开插件所在的页面&#xff0c;拷贝插件地址到记事本 如&#xff1a;https://chrome.google.com/webstore/detail/axure-rp-extension-for-ch/dogkpdfckl…

java web项目_[适合初中级Java程序员修炼手册从0搭建整个Web项目](二)

前言文本已收录至我的GitHub仓库&#xff0c;欢迎Star&#xff1a;https://github.com/bin392328206种一棵树最好的时间是十年前&#xff0c;其次是现在six-finger-web一个Web后端框架的轮子从处理Http请求【基于Netty的请求级Web服务器】 到mvc【接口封装转发)】&#xff0c;再…