Configuring Statement Pooling
C3P0实现了透明的PreparedStatement池,它是根据JDBC规范定义的。在一些环境下,statement池能很大地提升应用的性能。在另一些环境下,statement池的花销也会轻微损害性能。当statement被准备时,statement池是否以及怎样提高性能,取决于怎样解析,计划,和数据库查询的优化。数据库以及JDBC驱动差异巨大。基于你的应用使用和不用statement池,取决于是否能提升性能。
maxStatements是控制statement池的JDBC标准参数。maxStatement定义了数据源缓冲的PreparedStatements总数。当它达到这个限制时,池将会销毁最近最少使用的PreparedStatement。这听起来简单,但是确切地是一个陌生的方法,因为缓冲的statement概念上属于不同的连接;他们不是全局的资源。理解maxStatements的大小,对于maxStatements,它没有搅动缓冲的statement,你需要考虑你应用中频繁使用的PreparedStatements数量。maxStatementsPerConnection是非标准的配置参数。它定义了每个被缓冲的连接中多少statement是被允许使用的。你能设置它比你频繁使用的PreparedStatements数目多,避免搅动。
如果这些参数都大于0,statement池将会被启动。如果两个参数都大于0,限制将会是被启用。如果仅有一个大于0,statement池将会是被启用,但是仅仅一个限制被启用。
Configuring Recovery From Database Outages
C3P0数据源是被设计(并且默认被配置)来从临时数据库损坏中恢复,例如发生在数据库重启或者网络连接的短期损失。
当C3P0数据源试图取得连接并且失败时,它将会重试直到acquireRetryAttempts设定的次数;并且每次的重试的间隔是acquireRetryDelay。如果所有的重试都失败,任一等待数据库连接的客户端都会看到异常,说明不可以取得连接。注意在一轮重试都失败之前客户端不会看到任意的异常。如果acquireRetryAttempts设置为0,C3P0将会无限期地试图取得新的连接,并且调用getConnection()也许会无限期地阻塞,等待一个成功的确认。
一旦一轮都重试失败,有两种可能的策略。默认情况下,C3P0数据源将仍会是活跃的,并且将会重试取得连接。如果你设置breakAfterAcquireFailure为true,在一轮的连接失败后,数据源将会考虑自身被破坏,将来的请求将会立即失败。
注意如果数据库发生重启,池也许包含了先前取得的胆识现在陈旧的连接。默认请款下,这些陈旧的连接将被侦测到并且延迟清除,当应用试图使用它们,并且会看到异常。设置maxIdleTime或者maxConnectionAge能帮助加速被破坏连接的替换。如果你希望避免整体应用异常,你必须采用连接测试策略,该策略可能先于它们传送给客户端之前侦测到陈旧的连接。即使使用活跃的连接测试(testConnectionsOnCheckout被设置为true,或者testConnectionsOnCheckin以及一个简短的idleConnectionTestPeriod),在数据库重启的时候,你的应用也许会看到偶然的异常。例如,在数据库连接被check out之后,如果数据库被重启。
分享到:
相关推荐
3. 连接池大小动态调整:通过`maxIdleTime`和`minPoolSize`等参数,C3P0可以自动调整连接池的大小。 五、C3P0常见问题及解决 1. 连接泄露:确保每次使用完连接都正确关闭,检查代码中是否有异常处理导致的连接未...
3. **连接池参数调整**:C3P0提供了丰富的配置选项,允许用户根据实际需求调整连接池的大小、超时时间、空闲连接检查频率等参数。 4. **多数据源支持**:C3P0不仅支持MySQL,还兼容其他多种数据库,如Oracle、SQL ...
3. 连接测试:C3P0提供了多种测试连接有效性的策略,如简单的ping操作或执行特定的SQL语句,确保分配给应用的连接都是可用的。 4. 线程安全:C3P0保证了在多线程环境下对连接的正确管理和调度,避免了线程之间的竞...
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。在Java应用程序中,C3P0可以帮助我们管理数据库连接,提高应用程序的性能和稳定性。下面将详细介绍C3P0连接池的一些关键...
### Hibernate C3P0 数据库连接池参数详解 在企业级应用开发中,数据库连接池技术扮演着极其重要的角色,它能显著提高系统的性能并优化资源管理。Hibernate 作为 Java 领域中最流行的 ORM(对象关系映射)框架之一...
在使用C3P0时,开发者通常会在项目中引入c3p0-0.9.5.1.jar,然后在配置文件(如`persistence.xml`或自定义的配置文件)中配置C3P0连接池的相关参数。这些参数包括数据源的初始和最大连接数、测试查询、超时时间等。 ...
在应用中使用C3P0,通常需要在配置文件(如`persistence.xml`或自定义的配置文件)中设置相关参数,包括最小连接数、最大连接数、初始化连接数、超时时间等。例如: ``` <property name="c3p0....
3. **mchange-commons-java-0.2.3.4.jar**: Mchange Commons是C3P0的一个依赖库,提供了一些通用的工具类和辅助功能。这个版本的Mchange Commons包含了一些C3P0需要的辅助功能,比如线程安全的日期和时间操作,以及...
3. 超时与空闲连接处理:C3P0允许设置连接的获取、使用和空闲超时,避免长时间占用资源。同时,它会根据设定的策略定时回收空闲时间过长的连接。 4. 连接池扩展性:C3P0支持多种数据库驱动,如MySQL、Oracle、...
在使用C3P0前,首先需要配置`init.properties`文件,该文件包含了数据库连接的基本参数,例如: - `datasource.type`:指定数据源类型,在此例中为MySQL。 - `driverClassName`:数据库驱动类名,这里是`...
总之,整合SpringMVC和C3P0连接池可以提升应用的数据库操作性能,通过合理配置C3P0参数,可以进一步优化连接池的使用,降低资源消耗。同时,结合Spring的其他组件,如JdbcTemplate,可以简化数据库操作,让代码更易...
C3P0是一个广泛使用的开源Java JDBC连接池,它的全称是Comprehensive Connection Pooling Package。这个库的主要目的是提供数据库连接的高效管理,以优化数据库应用程序的性能和资源利用。C3P0的设计目标是为了满足...
C3P0 连接池是 Java 应用中广泛使用的数据库连接管理工具,它能够有效地管理和维护数据库连接,提高应用程序的性能和稳定性。在 C3P0 配置中,有多个关键参数用于定制连接池的行为。以下是对这些参数的详细解释: 1...
3. **性能优化**:c3p0 支持连接池的配置参数调整,如最小、最大连接数,超时时间等,可以根据应用负载进行优化。 4. **支持多种数据库**:c3p0 不仅支持 MySQL、Oracle 这样的主流数据库,还兼容许多其他数据库...
在IT行业的数据库管理领域,C3P0是一个广泛使用的开源连接池组件,它为Java应用程序提供了高效、稳定的数据库连接管理服务。C3P0通过预维护一定数量的数据库连接,避免了频繁创建和销毁数据库连接所带来的性能开销,...
3. **自动检测与恢复**:C3P0具有检测失效连接并自动替换的功能,确保连接池中的每个连接都是有效的。通过`testConnectionOnCheckout`和`testConnectionOnCheckin`属性,可以在获取和归还连接时进行健康检查。 4. *...
在本文中,我们将深入探讨C3P0连接池的基本概念、工作原理以及如何在Java项目中配置和使用。 **C3P0简介** C3P0是由David Syer创建的一个开源的JDBC连接池,它的全称是Composed Connection Pool 2000。C3P0的主要...
c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。c3p0-0.9.2-pre1是其在2007年发布的一个版本,尽管现在有更新的版本,但这个老版本在一些旧项目中仍然被广泛使用。本文将...
C3P0是一个开源的Java连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。这个压缩包文件包含了使用C3P0数据库连接池所需的关键组件和配置文件,使得数据库连接管理更加高效和稳定。 首先,`c3p0-...