`
isiqi
  • 浏览: 16350922 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Proxool 连接池工作机制探讨

阅读更多

合理使用对象池可以大幅减少对象创建、初始化时间,连接池作为对象池的一种典型应用,虽不能减少数据库的物理连接数,但是却大大减少数据库连接的创建、初始化时间。关于数据库连接池的工作原理,这里作一简单说明:

1)初始化一个连接池管理器,DBConnectionPoolManager

2)获取连接池,ConnectionPool,多个数据库会有多个connectionpools

2ConnectionPool负责创建、释放、回收连接;

3)连接池会有Thread在侦听连接是否有效、sql执行时间是否超标等;

Proxool作为一开源连接池,由于其支持多数据库且有强大的监控、统计功能,广受部分开发人员垂青,本人也不例外。

1proxool何时创建连接,Proxool在下述2种情形下会创建连接:

1)程序显性获取数据库库连接时,比如getConnection时,此时proxool可能会创建连接。当无可用连接时,proxool便会即时创建一个连接,此时该连接状态为Active

2PrototyperThrea

当当前连接数小于最小连接数或者当前可用连接数小于最小可用连接数时,便会创建新连接,并将新建的连接状态置为Available.

2、执行sql语句时,proxool在做哪些事情

1)记录正在执行的sql语句;

2)记录开始执行时间,执行结束事件;

3)按不同的事件频率统计,sql语句平均耗时;

4)记录sql执行次数;

3、连接如何回收、销毁

HouseKeeperThread,该thread负责检查连接是否有效、连接sql执行时间是否超过最大activetime(默认5分钟),连接存活时间是否超过最大存活事件(默认4小时).

一个良好的程序员应该在获取数据库连接后及时释放连接,一旦有个别程序数据库连接不会释放,则连接池马上将达到最大连接数,并阻塞之后的所有数据库请求。

1)连接失效,proxool会根据预设的测试sql语句,通常是取数据库时间(select current_date)等,测试该连接是否可以正常工作,如果测试失败,则proxool会从连接池中移除该对象,并销毁;

2sql执行时间大于maxactivetime

当遇上大数据量select语句,或者update大数据量索引表时,往往会耗时较长,如果一个sql语句其在maxactivetime时间内未执行完毕的话,proxool会将其强行关闭,从pool中移除,并销毁;

3)当连接建立时间到现在超过maxconnectionlife

HouseKeeperThreadrun过程中发现,有个available连接其建立到现在已超过maxconnectionlife时,proxool会将其物理关闭,从pool中移除,并销毁,为了确保物理连接数最少。

分享到:
评论

相关推荐

    proxool 连接池实例

    下面我们将深入探讨Proxool连接池的使用、配置以及其核心概念。 **一、Proxool简介** Proxool是由iBatis团队开发的,其设计目标是提供一个简单易用、功能全面且性能优异的数据库连接池。与C3P0、DBCP、HikariCP等...

    关于proxool数据库连接池的配置集合

    本篇文章将深入探讨Proxool数据库连接池的配置及其重要性。 首先,理解Proxool的基本概念是必要的。Proxool是Proxy + Pool的组合,它通过代理(Proxy)机制来管理数据库连接,使得应用程序可以透明地使用连接池。...

    项目中成功的运用proxool连接池

    本文将深入探讨如何在项目中成功地运用`proxool`连接池,以提高系统的稳定性和效率。 首先,我们需要了解什么是连接池。连接池是一种数据库资源管理技术,它预先创建并维护一定数量的数据库连接,当应用需要时,...

    使用数据库连接池proxool配置mysql数据库

    配置Proxool连接池** 配置Proxool主要涉及以下几个步骤: - **创建配置文件**:通常我们会创建一个名为`proxool.properties`的配置文件,其中包含了与数据库连接相关的所有参数。例如: ``` proxool.pool-name=...

    proxcool配置数据库连接池

    3. **初始化连接池**:在Java代码中加载配置并初始化Proxool连接池。可以使用`ProxyPoolConfig`和`ProxyConnectionFactory`类: ```java Properties properties = new Properties(); properties.load(new ...

    java hibernate中各种连接池比较

    本文将对比分析三个常见的开源数据连接池:C3P0、DBCP 和 Proxool,并深入探讨它们的主要参数和使用场景。 1. C3P0 Hibernate 开发团队推荐使用 C3P0 连接池。C3P0 是一个开源的 JDBC 连接池,它提供了强大的异常...

    Spring各种连接池的比较.doc

    本篇文章将深入探讨Spring支持的几种主要连接池,包括Apache DBCP、C3P0以及Proxool,并分析它们的特性、配置和适用场景。 首先,Apache DBCP(BasicDataSource)是Spring开发团队推荐的数据源,它是Apache Commons...

    proxool源码以及相关api

    Proxool的核心思想是使用代理(Proxy)机制来管理数据库连接,通过创建一个虚拟的连接池,提供对物理数据库连接的高效复用。它具有以下特性: - **连接池动态扩展**:根据应用程序的负载情况,Proxool能够自动调整...

    hibernate连接池驱动

    本文将深入探讨Hibernate如何与这两种连接池驱动配合工作,以及它们各自的特点。 首先,我们来了解**Hibernate**。Hibernate是一个开源的ORM框架,它允许开发人员将Java对象映射到关系数据库表,从而避免了传统的...

    proxool-0.9.1

    **Proxool 0.9.1:数据库连接池详解** `Proxool` 是一个开源的、基于Java的数据库连接池,它提供了一种高效、灵活的方式来管理和控制数据库连接。在0.9.1版本中,这个工具为开发者提供了更稳定的性能和优化的资源...

    proxool教程.zip

    1. **Proxool连接池配置参数**: - `proxool.housekeeping-test-sql`: 用于检测连接是否有效的SQL语句,例如`SELECT 1`。 - `proxool.housekeeping-frequency`: 检查连接健康状况的时间间隔(毫秒)。 - `proxool...

    proxool 数据库

    **Proxool数据库连接池详解** 在IT行业中,数据库管理是关键的一环,尤其是在高并发、大数据量的应用场景下,数据库连接池的使用显得尤为重要。Proxool是Apache的一个开源项目,它提供了一个轻量级的数据库连接池...

    proxool 简单应用

    标题 "proxool 简单应用" 暗示了我们即将探讨的是 Proxool,一个开源的数据库连接池工具,它在Java应用程序中用于管理数据库连接,提高系统的性能和可伸缩性。Proxool 提供了一种轻量级的解决方案,允许开发者通过...

    proxool配置详解

    Proxool是Java中的一款连接池实现,它为数据库提供了一个高效的连接池管理机制,能够有效地提高应用在处理大量并发请求时的性能。本篇文章将深入探讨Proxool的配置,以便更好地理解如何优化数据库连接管理。 首先,...

    Spring+proxool+hibernate+struts2+aop_Jar包

    2. **Proxool连接池**:Proxool是一个轻量级的数据库连接池,它可以有效地管理和复用数据库连接,减少创建和销毁连接的开销,提高系统的性能。Proxool提供监控和统计信息,便于开发者了解数据库连接的使用情况,优化...

    c3p0_pxoxoll_简单应用

    本文将深入探讨两个常用的数据库连接池工具——C3P0和Proxool,并提供一个简单的应用示例。 C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。C3P0的优势在于其强大的异常...

    Hibernate Developer Guide

    文档中提到了几种连接池的实现,比如c3p0和Proxool连接池。除了这些,还讨论了通过应用程序服务器使用JNDI获取连接和其他连接特定配置的相关内容。 ### 方言配置 Hibernate需要知道如何与所使用的数据库方言对话,...

    包文件11

    `proxool-cglib.jar` 和 `proxool-0.9.1.jar` 是Proxool,一个连接池实现,它提供了一种管理数据库连接的高效方式,避免频繁创建和销毁数据库连接,从而提高性能并降低资源消耗。`proxool-cglib.jar` 可能包含了...

Global site tag (gtag.js) - Google Analytics