c3p0配置解析

来源:互联网 发布:iphone微信定位软件 编辑:程序博客网 时间:2024/06/09 20:24

1、C3P0与JDBC的相关概念

Connection:是指JDBC规范中的Connection,与接口java.sql.Connection相对应。与特定数据库的连接(会话)。在连接上下文中执行 SQL 语句并返回结果,一个Connection代表一个 物理数据库连接。
PhysicalConnection:物理连接,真正完成数据库与应用之间的连接建立和维护,并解析语义,返回相应,一般由各个厂家在驱动程序中提供。例如:Oracle的为oracle.jdbc.driver.Phys icalConnection。
PooledConnection:是与JDBC规范中javax.sql.PooledConnection相对应,为连接池管理提供钩子 (hook) 的对象。PooledConnection 对象表示到数据源的物理连接。该连接在应用程序 使用完后可以回收而不用关闭,从而减少了需要建立连接的次数。
ConnectionProxy:连接代理,一般由数据库连接池提供,完成对物理连接的包装,通过代理连接将一些操作交给物理连接去完成,一些操作自己完成,例如:close方法,一般物理连 接的close方法是指物理上彻底关闭连接,而Proxy的一般实现是将该ConnectionProxy标记为闲置状态,并将其放回到连接池中,一般下次可用。
Pool:连接池的核心实现者,主要完成ConnectionProxy的存储,以及连接的获取、释放、创建、物理销毁、连接可用性探测、性能监控。连接池的核心,直接影响到连接池的高可用性 、高并发、高性能等特性。
PooledDataSource:连接池对DataSource的一种实现,意在从Pool中获取连接,达到连接的可重用性。
checkout : 从池中取得可用的连接
checkin :把连接放回池中
checkoutconnection : 被使用的连接
checkinconnection : 没有被使用的连接

2、C3P0的设置

acquireIncrement    当连接池中的连接耗尽的时候c3p0一次获取的连接数
initialPoolSize    初始化时获取连接的数量
maxPoolSize       连接池中保留的最大连接数
minPoolSize
maxIdleTime       最大空闲时间,规定时间内未使用则连接被丢弃。若为0则永不丢弃
acquireRetryAttempts   从数据库获取新连接的尝试次数
acquireRetryDelay    两次连接请求的间隔时间
autoCommitOnClose    连接关闭时未解析,挂起的事务的处理方式: 1 操作回滚 2 提交(commit)事务
automaticTestTable   C3P0会建一个空表,然后通过对这个表进行查询来检验连接的有效性。这个查询是C3P0自己生成的,无法指定。
breakAfterAcquireFailure    设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。否则,保留数据源,继续尝试获取
checkoutTimeout    当连接池连接用完时客户端调用getConnection()后等待获取新连接的时间
connectionTesterClassName    ConnectionTester 接口的实现,用于测试连接
debugUnreturnedConnectionStackTraces 跟踪所有连接的check out情况,用于调试,找出不返回连接的情况。默认不开启   
idleConnectionTestPeriod    检查所有连接池中空闲连接的间隔时间
maxAdministrativeTaskTime     防止任务持有连接之后挂起,在超过这个时间之后,收到终端
maxConnectionAge    规定连接的接入时间
maxIdleTimeExcessConnections    用于更快的收缩到 minPoolSize
maxStatements     用以控制数据源内加载的PreparedStatements数量
maxStatementsPerConnection    定义了连接池内单个连接所拥有的最大statements数
numHelperThreads   帮助进程的数量,缓慢的JDBC操作会通过帮助进程完成。
overrideDefaultUser   
overrideDefaultPassword    这两个参数用于应用还使用非C3P0的连接,这样强制使用用户名和密码。
preferredTestQuery    定义所有连接测试都执行的测试语句,可以加速测试过程
propertyCycle    C3P0会定期检查时候有超时现象,这个就是检查的周期
statementCacheNumDeferredCloseThreads    当父连接不再使用,销毁statement,防止死锁。
testConnectionOnCheckout   如果设为true那么在每个连接check out的时候都将校验其有效性,但过于消耗资源,不建议使用。更好的方式是,使用 idleConnectionTestPeriod 定期的检查连接的有效性。
testConnectionOnCheckin    如果设为true那么在取得连接的同时将异步地校验连接的有效性
unreturnedConnectionTimeout    对于从池中取出连接(check out)而未放回(check in)的情况,设置超时,以强制释放。
connectionCustomizerClassName   ConnectionCustomizer 接口的实现,可设置连接属性  

0 0
原创粉丝点击