c3p0连接池探索.pptx

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c3p0连接池探索

C3P0 初探 王洋 2012-08-15 目录 C3P0简介 相关概念 C3P0的特点 源码分析 使用与设置 各连接池的比较 性能测试 C3P0简介 JAVA开源的连接与Statement池 JDBC3 支持,JDBC2的可选扩展 能增强JDBC drivers的功能 应用广泛,和Hibernate一 起发布 使用要求 level 1.3.x or above Java Runtime EnvironmentJDBC 2.x or above javax.sql Libraries Java 1.4.x and 1.5.x C3P0与JDBC的相关概念 Connection:是指JDBC规范中的Connection,与接口java.sql.Connection相对应。与特定数据库的连接(会话)。在连接上下文中执行?SQL?语句并返回结果,一个Connection代表一个物理数据库连接。 PhysicalConnection:物理连接,真正完成数据库与应用之间的连接建立和维护,并解析语义,返回相应,一般由各个厂家在驱动程序中提供。例如:Oracle的为oracle.jdbc.driver.PhysicalConnection。 PooledConnection:是与JDBC规范中javax.sql.PooledConnection相对应,为连接池管理提供钩子?(hook)?的对象。PooledConnection?对象表示到数据源的物理连接。该连接在应用程序使用完后可以回收而不用关闭,从而减少了需要建立连接的次数。 ConnectionProxy:连接代理,一般由数据库连接池提供,完成对物理连接的包装,通过代理连接将一些操作交给物理连接去完成,一些操作自己完成,例如:close方法,一般物理连接的close方法是指物理上彻底关闭连接,而Proxy的一般实现是将该ConnectionProxy标记为闲置状态,并将其放回到连接池中,一般下次可用。 Pool:连接池的核心实现者,主要完成ConnectionProxy的存储,以及连接的获取、释放、创建、物理销毁、连接可用性探测、性能监控。连接池的核心,直接影响到连接池的高可用性、高并发、高性能等特性。 PooledDataSource:连接池对DataSource的一种实现,意在从Pool中获取连接,达到连接的可重用性。 checkout?:?从池中取得可用的连接 checkin?:把连接放回池中 checkoutconnection?:?被使用的连接 checkinconnection?:?没有被使用的连接 通过连接池获取连接 C3P0特点 每个用户都提供独立的连接和statement池 连接池设置参数maxPoolSize是针对一个用户的,通过(user, password)对来区分 能支持Connection和Statemen的非标准方法 设置的存放位置 Java properties file ?perties? XML configuration file c3p0-config.xml?默认的配置文件 System properties 连接池默认从不超时,但两个参数可以设置超时 maxConnectionAge 被数据库使用的时间 maxIdleTime 在连接池中空闲的时间 C3P0特点(2/4) 提供连接测试 连接失效的原因 资源泄漏,驱动(JDBC drivers )bug,网络问题等 默认是没有测试 设置statement池 有时会提高性能,有时会损害性能 针对不同的数据库 如果使用,要进行测试,以确定相关参数 管理连接 提供了hook接口,能修改连接,跟踪连接 时机: 从数据库中取出连接时 返回给客户端之前 返回给连接池之前 在连接被连接池析构之前 C3P0特点(3/4) 错误恢复 DB错误包括:DB重新启动,网络连接中断等 设置重试 设置重试次数 设置重试间隔 如果重试的尝试都失败了,如果再有数据库连接请求,有两个处理策略: 1 重新连接 2 不再尝试,直接返回fail 应对DB重启 设置 maxIdleTime 或 maxConnectionAge 来加速连接池替换失效连接 设置连接测试 C3P0特点(4/4) Debug 及避开有问题的应用程序 c3p0 可以帮助用户来debug 提供check in和check out不对应时的记录信息 设置unreturnedConnectionTimeout 日志设置 类似与jakarta commons-logging ,提供实时的日志记录 helper线程 每个 DataSource 有3个helper线程,在系统重载或一直有挂起的任务时应增加helper线程的数量 JDBC中慢的操作是he

文档评论(0)

80219pm + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档