c3p0数据库连接池配置总结

更新时间:2023-05-12 02:40:00 阅读: 评论:0

c3p0数据库连接池配置总结
c3p0⽅法配置
c3p0配置⽂件配置
前⾔
关于c3p0⼀般有这么两种配置,⼀种是通过t⽅法进⾏配置,另⼀种是通过在同src⽬录下的l⽂件或者c3p0.properties⽂件进⾏相关的配置。
c3p0通过t⽅法进⾏配置
private static ComboPooledDataSource dataSource =new ComboPooledDataSource();
/**
* 配置DataSource
*/
public static void configDataSource(){
try{
dataSource.tDriverClass("sql.jdbc.Driver");
dataSource.tJdbcUrl("jdbc:mysql://localhost:3306/zhanghanlun");
dataSource.tUr("zhanghanlun");
dataSource.tPassword("123456");
dataSource.tInitialPoolSize(3);
dataSource.tMaxPoolSize(10);
dataSource.tMinPoolSize(3);
dataSource.tAcquireIncrement(3);
}catch(PropertyVetoException e){
e.printStackTrace();
}
}
/**
* 获取Connection连接
* @return
*/
public static Connection getConnection(){
Connection conn = null;
configDataSource();
try{
conn = Connection();
}catch(SQLException e){
e.printStackTrace();
}
return conn;
}
c3p0通过l⽂件进⾏配置
关于通过配置⽂件进⾏配置的话,
这边需要把xml⽂件⽅法同src⽂件夹下,c3p0会扫描⽂件进⾏相关的配置。
在Maven依赖中要加⼊c3p0和mysql-connector-java依赖,版本号⼀定要写。
废话不多说,下⾯是l⽂件的代码
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<!--默认配置,如果没有指定则使⽤这个配置-->
<default-config>
<property name="ur">zhanghanlun</property>
<property name="password">123456</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/zhanghanlun</property>
<property name="driverClass"&sql.jdbc.Driver</property>
<property name="checkoutTimeout">30000</property>
<property name="idleConnectionTestPeriod">30</property>
<property name="initialPoolSize">3</property>
<property name="maxIdleTime">30</property>
<property name="maxPoolSize">100</property>
<property name="minPoolSize">2</property>
<property name="maxStatements">200</property>
</default-config>
<!--命名的配置,可以通过⽅法调⽤实现-->
<named-config name="test">
<property name="ur">zhanghanlun</property>
<property name="password">123456</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/zhanghanlun</property>
<property name="driverClass"&sql.jdbc.Driver</property>
<!--如果池中数据连接不够时⼀次增长多少个-->
<property name="acquireIncrement">5</property>
<!--初始化数据库连接池时连接的数量-->
<property name="initialPoolSize">20</property>
<!--数据库连接池中的最⼤的数据库连接数-->
<property name="maxPoolSize">25</property>
<!--数据库连接池中的最⼩的数据库连接数-->
<property name="minPoolSize">5</property>
</named-config>
</c3p0-config>
java代码对应如下:
//加载名字为“test”的配置⽂件
private static ComboPooledDataSource dataSource =new ComboPooledDataSource("test");
/**
* 获取Connection连接
* @return
*/
public static Connection getConnection(){
Connection conn = null;
try{
conn = Connection();
}catch(SQLException e){
e.printStackTrace();
}
return conn;
}
是不是代码简洁了很多,所以在我们通常使⽤配置⽂件来创建数据库的连接池。
c3p0常⽤配置参数介绍
在前⾯的c3p0的相关配置中,我们看到了c3p0的配置参数,这⾥我们介绍⼏个常⽤的c3p0的配置参数最基础的参数配置:
1. driverClass : 数据库驱动(⽐如mysql,或者oracle数据库的驱动)
2. jdbcUrl: jdbc数据库连接地址(例如jdbc:mysql://localhost:3306/zhanghanlun)
3. ur:数据库⽤户名
4. password:和数据库⽤户名对应的数据库密码
基础的参数配置
参数默认
解释
initialPoolSize3连接池初始化时创建的连接数(介于maxPoolSize和minPoolSize之间)
maxPoolSize15连接池中拥有的最⼤连接数,如果获得新连接时会使连接总数超过这个值则不会再获取新连接,⽽是等待其他连接释放,所以
这个值有可能会设计地很⼤
minPoolSize3连接池保持的最⼩连接数,后⾯的maxIdleTimeExcessConnections跟这个配合使⽤来减轻连接池的负载acquireIncrement3连接池在⽆空闲连接可⽤时⼀次性创建的新数据库连接数
管理池⼤⼩和连接时间的配置
参数默
解释
maxIdleTime0连接的最⼤空闲时间,如果超过这个时间,某个数据库连接还没有被使⽤,则会断开掉这个连接如果为0,则永
远不会断开连接
maxConnectorAge0连接的最⼤绝对年龄,单位是秒,0表⽰绝对年龄⽆限⼤
maxIdleTimeExcessConnection0单位秒,为了减轻连接池的负载,当连接池经过数据访问⾼峰创建了很多连接,但是后⾯连接池不需要维护这么多连接,必须⼩于maxIdleTime.配置不为0,则将连接池的数量保持到minPoolSize
配置连接测试
参数默认值解释
automaticTestTable null 如果不为null,c3p0将⽣成指定名称的空表,使⽤该表来
测试连接
hange.v2.c3p0.impl.DefaultConnectionTester
-通过实现ConnectionTester或QueryConnectionTester的类来测试连接。类名需制定
全路径。
idleConnectionTestPeriod0每个⼏秒检查所有连接池中的空闲连接
preferredTestQuery null 定义所有连接测试都执⾏的测试语句。在使⽤连接测试的情况下这个⼀显著提⾼测试速度。注意: 测试的表必须在
初始数据源的时候就存在
testConnectionOnCheckin fal如果设为true那么在取得连接的同时将校验连接的有效性testConnectionOnCheckout fal如果为true,在连接释放的同事将校验连接的有效性。
在这⼏个参数中,idleConnectionTestPeriod、testConnectionOnCheckout和testConnectuonOnCheckin控制什么时候连接将被校验检测。automaticTestTable、connectionTesterClassName和perferedTestQuery控制连接将怎么样被检测。
配置语句池
参数默
解释
maxStatements0JDBC的标准参数,⽤以控制数据源内加载d的PreparedStatements数量maxStatementsPerConnection0maxStatementsPerConnection定义了连接池内单个连接所拥有的最⼤缓存statements数
statementCacheNumDeferredCloThreads0如果⼤于零,则语句池将延迟物理clo()缓存语句直到其⽗连接未被任何客户端使⽤,或者在其
内部(例如在测试中)由池本⾝使⽤。
配置数据库的中断恢复
参数默认
解释
acquireRetryAttempts30定义在从数据库获取新连接失败后重复尝试的次数acquireRetryDelay1000两次连接间隔时间,单位毫秒
breakAfterAcquireFailure fal
获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效 保留,并在下次调⽤getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试 获取连接失败后该数据源将申明已断开并
永久关闭
配置未解决的事务处理
参数默认值解释
autoCommitOnClo fal连接关闭时默认将所有未提交的操作回滚。如果为true,则未提交设置为待提交⽽不是回滚。
forceIgnoreUnresolvedTransactions fal官⽅⽂档建议这个不要设置为true
其他数据源配置
参数默认
解释
checkoutTimeout0当连接池⽤完时客户端调⽤getConnection()后等待获取新连接的时间,超时后将抛出SQLException,如设为0则⽆限期
等待。单位毫秒。
factoryClassLocation0指定c3p0 libraries的路径,如果(通常都是这样)在本地即可获得那么⽆需设置,默认null即可
numHelperThreads3c3p0是异步操作的,缓慢的JDBC操作通过帮助进程完成。扩展这些操作可以有效的提升性能通过多线程实现多个操作
同时被执⾏

本文发布于:2023-05-12 02:40:00,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/593671.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:连接   配置   数据库   获取   参数   测试   操作
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图