c3p0_java开源连接池中文指南.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据库连接池基础 没有连接池的数据库连接方式指通过DriverManager和基本实现DataSource进行连接,但它相关连接的建立以及关闭是非常耗时的. 如果使用连接池,将有池来管理相关的数据库连接,减少对数据库连接操作. 连接池所做的操作,除了管理连接,还有就是对数据库jdbc api的封装,但jdbc api才是根本,外面做的都是包装,再花哨都是假的。 ?c3p0统一概念 ? checkout :从池中取得可用的连接 ?? checkoutconnection:被使用的连接 ?? checkin:把连接放回池中 ?? checkinconnection:没有被使用的连接 ???所有超时设置,相关的连接,是物理连接的关闭,而不是连接返回池中 ???管理的是pooledconnection,而不是物理的connection ?? pooledconnection是sun针对连接池的接口,它本身包含connection,和这个connection相关的所有statement,result,一个checkout的connection所作的所有数据库操作,都被pooledconnection所管理. ?? statement缓存,主要针对PreparedStatement和CallableStatement,statment缓存主要相对一个connection来说的,不同connection的statment不能通用.? c3p0行为 生成一个connnection 当池中connection没有到达最大数,当有请求出现,将会产生connection. 成生一个pooledconnection 通过pooledconnection.getConnection()得到连接(得到连接是newProxyConnection,不是物理连接) ?checkin connection 与pooledconnection脱离关系 关闭与这个connection相关的resultset 关闭所有没有缓冲的statement. checkin所有缓存的statement. 修改pooledconnection相关信息 ?checkout connection? 查看池中是否有没有使用的connection,有就返回 没有,如果没有达到最大数,就生成一个,或者就等待 ? c3p0常用配置属性 automaticTestTable automaticTestTable作为测试connection是否有效的表,如果表存在,但有记录,抛出错误,如果表不存在,则建立,并使用SELECT * FROM automaticTestTable?作为连接测试语句 如果automaticTestTable没有设置,而preferredTestQuery设置,则使用preferredTestQuery作为连接测试语句 checkoutTimeout 从池中拿未使用的连接,超时设置,如果没有设置,就不超时. numConnections 表明池中有多少个连接 numIdleConnections 表明池中有多少个空闲连接,它们可以被checkout numBusyConnections 表明池中有多少个被checkout的连接,记住: numIdleConnections + numBusyConnections = numConnections numUnclosedOrphanedConnections 都是checkoutconnection,但他们已经不再池中管理了.当他们checkin时候,将被destory? connectionCustomizerClassName hook方法,在对相关资源做操作的时候,他所操作的connection是真实的数据库连接,而不是proxy过的connection? maxIdleTime 在checkout一个connection时候,判断这个connection没有被使用的时间是否大于maxIdleTime,来决定是关闭它,还是被checkout maxConnectionAge 设置一个连接在池中最长的时间,如果时间超过,将会从池中清除 testConnectionOnCheckout 如果设置为true,每次从池中取一个连接,将做一下测试,使用automaticTestTable?或者?preferredTestQuery,做一条查询语句.看看连接好不好用,不好用,就关闭它,重新从池中拿一个. unreturnedConnectionTimeout 一个checkout连接的超时设置,一旦一个checkout连接超时,他将物理的关闭,而不是返回池中,主要是防止连接被长期使用不释放,这个设置也是比较危险的 idleC

文档评论(0)

***** + 关注
实名认证
文档贡献者

本账号下所有文档分享可拿50%收益 欢迎分享

1亿VIP精品文档

相关文档