c3p0配置详解:连接池优化指南
需积分: 12 167 浏览量
更新于2024-09-12
收藏 49KB DOC 举报
"c3p0详细配置"
C3P0是一个开源的JDBC连接池,由Mchange Software公司提供,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。C3P0的主要优点在于它的性能优化特性,如连接池管理和自动管理数据库连接。以下是对C3P0配置参数的详细说明:
1. **acquireIncrement**:这是当连接池中的连接耗尽时,c3p0一次性尝试获取的新连接数,默认值为3。增加此值可以提高在高并发场景下获取连接的速度,但也会增加数据库服务器的压力。
2. **acquireRetryAttempts**:定义了在尝试从数据库获取新连接失败后,c3p0会重复尝试的次数,默认为30次。这意味着在达到这个次数之前,c3p0不会完全放弃获取连接。
3. **acquireRetryDelay**:两次连接获取尝试之间的间隔时间,单位是毫秒,默认为1000毫秒(即1秒)。设置适当的延迟可以避免短时间内对数据库服务器的频繁请求。
4. **autoCommitOnClose**:此属性控制是否在关闭连接时自动提交未提交的事务,默认为false。设置为true可能导致意外的数据提交,因此一般建议保持默认设置。
5. **automaticTestTable**:c3p0可以创建一个名为Test的表用于自我检测连接是否正常。如果设置了这个属性,`preferredTestQuery`会被忽略。测试表不应用于业务操作,仅用于c3p0内部检查。
6. **breakAfterAcquireFailure**:如果设置为true,当获取连接失败后,c3p0将不再尝试获取连接,而是宣告数据源已断开并永久关闭。默认为false,意味着即使失败,数据源仍然会继续尝试获取连接。
7. **checkoutTimeout**:当连接池耗尽时,客户端等待新连接的最大时间,单位是毫秒。默认为0,表示无限期等待。设置非零值可以防止应用程序长时间阻塞。
8. **testConnectionOnCheckout**:如果设置为true,每次从连接池获取连接时都会进行连接有效性测试,确保返回的连接是可用的。这会增加性能开销,但可以提高应用的健壮性。
9. **preferredTestQuery**:定义一个SQL查询,用于在每次连接被用户取出时进行测试,确保连接正常。如果指定了`automaticTestTable`,此属性将被忽略。
10. **maxIdleTime**:连接的最大空闲时间,超过这个时间未使用的连接将被自动回收,以防止长时间未使用的连接占用资源。
11. **minPoolSize**和**maxPoolSize**:定义了连接池的最小和最大连接数量,最小值确保基本的并发需求,最大值则限制了数据库服务器的负担。
12. **idleConnectionTestPeriod**:设定定期检查连接是否还有效的间隔时间,单位是秒。这样可以主动检测并移除可能已失效的连接。
以上参数可以根据实际应用的负载、数据库服务器的性能以及对数据一致性的要求进行调整。合理的配置能有效提升系统性能,减少数据库资源的浪费,并提高应用的稳定性和可靠性。为了获得最佳效果,建议根据应用的实际情况进行细致的测试和调整。
2009-04-02 上传
2021-10-11 上传
2015-01-06 上传
2013-03-27 上传
2018-04-09 上传
2013-11-11 上传
北村浪子
- 粉丝: 8
- 资源: 3
最新资源
- Android圆角进度条控件的设计与应用
- mui框架实现带侧边栏的响应式布局
- Android仿知乎横线直线进度条实现教程
- SSM选课系统实现:Spring+SpringMVC+MyBatis源码剖析
- 使用JavaScript开发的流星待办事项应用
- Google Code Jam 2015竞赛回顾与Java编程实践
- Angular 2与NW.js集成:通过Webpack和Gulp构建环境详解
- OneDayTripPlanner:数字化城市旅游活动规划助手
- TinySTM 轻量级原子操作库的详细介绍与安装指南
- 模拟PHP序列化:JavaScript实现序列化与反序列化技术
- ***进销存系统全面功能介绍与开发指南
- 掌握Clojure命名空间的正确重新加载技巧
- 免费获取VMD模态分解Matlab源代码与案例数据
- BuglyEasyToUnity最新更新优化:简化Unity开发者接入流程
- Android学生俱乐部项目任务2解析与实践
- 掌握Elixir语言构建高效分布式网络爬虫