【数据库系列篇之一】-数据库连接池Proxool

MySQL数据库连接池 第一节:数据库连接池 1.为什么使用数据库连接池 回顾:jdbc步骤: 1.加载驱动 2.创建连接 3.sql预编译 (Statement/PreparedStatement ?) 4.执行sql(DQL:executeQuery(), DML:executeUpdate()) 5.关闭连接 在之前,我们每一次操作数据库,都需要走创建连接,并且用过就关闭。考虑一波并发。假如现在同时有10000个 人访问数据库。mysql扛不住,内存扛不住。 如何解决?使用数据库连接池 问题: 1.假如现在有10000人同时 阅读详情

  一、引子

     要问WEB程序与什么关系最紧密,那答案毫无疑问将会是数据库,我们几乎所有的WEB程序都是建立在数据库之上的,怪不得有些人说WEB程序其实就是跑到数据库操作系统之上的应用程序。而相应的一些数据库产品和解决方案也就应运而生,比如大到OracleDB2,小到Mysql,另一方面数据库性能优化的方案例如连接池的出现也就好不奇怪了。而我们今天所要探讨的正是数据库连接池的一个方面。

二、 Proxool 介绍
 
    目前数据库连接池产品非常之多, DBCP C3P0 Proxool 等都是非常优秀的产品,至于到底是用哪一个好那就取决与自己的喜好了,而我们今天将着重讨论 Proxool ,它这是一个 Java SQL Driver 驱动程序可以透明地为你现存的 JDBC 驱动程序增加连接池的功能,另外它提供一个的监控程序,可以实时的查看你系统所有连接池的使用情况,所以我个人偏好与它。
 
PS Hibernate 最近声称 DBCP 存在问题,它将不会在新的版本中增加对 DBCP 的支持,并建议开发者使用 C3P0 或者 Proxool ,至于什么问题我们这里就不加讨论了)
 
三、使用 Proxool
 
      说到使用很多人看到大篇大篇的使用文档就会头疼,看到英文资料就会退缩,在这里我将会用我的方式简单的罗列出它基本的使用方法其他生僻的用法将会被忽略,虽然基本但我保证胜任你的项目绝对没有问题,不信?那就跟着我一点一点的深入:)

3.1 你需要了解

    1 .它的版本:目前最新版本是 Proxool 0.9.0RC2 06 3 月份刚更新
    2 .配置连接池的几种方式:总共 3 种,属性文件 Properties 方式、 Xml 方式、程序中声明方式,由于最后一种(程序声明方式)比较老土也比较少用,所以在接下来的说明种将忽略它。
    3 .连接池的使用范围: 2 种情况- web 中的使用(带 servlet 的)、应用程序中的使用(带 main 函数的)。

3.2 配置第一步

    这一步我们将配置 proxool 的监控程序。
 
    准备条件:
          1 、一个空的 web 工程项目,可以部署到应用服务器。
          2 、加载 proxool-0.9.0RC2 lib 目录
 
    配置步骤:
    1 、在 WEB-INF 下增加文件 proxool.xml ,文件内容如下
 
<? xml version="1.0" encoding="UTF-8" ?>
< web-app  version ="2.4"  
    xmlns
="http://java.sun.com/xml/ns/j2ee"  
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"  
    xsi:schemaLocation
="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
>
    
< servlet >
       
< servlet-name > proxool </ servlet-name >
       
< servlet-class > org.logicalcobwebs.proxool.admin.servlet.AdminServlet </ servlet-class >
    
</ servlet >  

    
< servlet-mapping >
       
< servlet-name > proxool </ servlet-name >
       
< url-pattern > /admin </ url-pattern >
    
</ servlet-mapping >
</ web-app >
至此你的监控程序已经部署完成了!啊?这么快?对!就这么简单,你可以访问 http://localhost:8080/proxool/admin 来查看了,可惜的是现在没有一个连接创建。。。那接下来就让我们开始创建连接噢!

3.3 配置第二步

     这一步主要以 xml 的方式配置数据库的各个参数。
   准备条件:
       在第一步完成的基础之上。
   配置步骤:
        1 、在 WEB-INF 下建立 proxool.xml 文件,文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<something-else-entirely>
  
<proxool>
    
<alias>magicexml</alias>
    
<driver-url>jdbc:mysql://127.0.0.1:3306/gatewayserver</driver-url>
    
<driver-class>com.mysql.jdbc.Driver</driver-class>
    
<driver-properties>
      
<property name="user" value="root"/>
      
<property name="password" value="1234"/>
    
</driver-properties> 
    
<minimum-connection-count>6</minimum-connection-count>
    
<maximum-connection-count>20</maximum-connection-count>
    
<house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql>
  
</proxool>
</something-else-entirely>
 
至于文件内容中的各个参数的含义,待会将会逐一解释,而在这里你需要修改的地方有<diriver-url><driver-class>以及数据库用户名和密码。
       2、修改web.xml文件,增加一下内容:
 
<servlet> 
     
<servlet-name>ServletConfigurator</servlet-name>
     
<servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>     
     
<init-param>
             
<param-name>xmlFile</param-name>
             
<param-value>WEB-INF/proxool.xml</param-value>
      
</init-param>  
      
<load-on-startup>1</load-on-startup>  
</servlet>
     3 、建立 testservlet 这样一个 servlet 类,类的代码如下
 
package  DBProxool;

import  java.io.IOException;
import  java.io.PrintWriter;
import  java.sql.Connection;
import  java.sql.DriverManager;
import  java.sql.SQLException;
import  javax.servlet.ServletException;
import  javax.servlet.http.HttpServlet;
import  javax.servlet.http.HttpServletRequest;
import  javax.servlet.http.HttpServletResponse;

public   class  testservlet  extends  HttpServlet ... {

    
public void doGet(HttpServletRequest request, HttpServletResponse response)
            
throws ServletException, IOException ...{        

        Connection conn 
= null;
        
try ...{
               Class.forName(
"org.logicalcobwebs.proxool.ProxoolDriver");
               conn 
= DriverManager.getConnection("proxool.magicexml");
                                                  
/** *//**
                                                     用conn做任何你想做的事情
                                                  *
*/

               
if(conn!=null)...{
                                       conn.close();
               }

            
        }
 catch (ClassNotFoundException e) ...{
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }
 catch (SQLException e) ...{
            e.printStackTrace();
        }

                
    
public void doPost(HttpServletRequest request, HttpServletResponse response)
            
throws ServletException, IOException ...{
                       
    }


}


 
重启服务器,访问 testservlet ,查看监控程序,哈哈~看到连接了,如下图
 

3.4 配置第三步

      这一步主要配置连接池的一些参数。
      由于整个程序已经可以运行起来了,或许你很高兴,但是你可不要高兴的太早,如果就这样拿你的项目去做压力测试,那十有八九是通不过的!为什么啊?因为你的连接池还没有经过参数的调优,下面我就简单的介绍一下各个参数的意思,你明白了这些,压力测试肯定不成问题。
      house-keeping-sleep-time: house keeper 保留线程处于睡眠状态的最长时间 ,house keeper 的职责就是检查各个连接的状态 , 并判断是否需要销毁或者创建,这个的默认值是 30 秒。
      house-keeping-test-sql 如果发现了空闲的数据库连接 .house keeper 将会用这个语句来测试 . 这个语句最好非常快的被执行 . 如果没有定义 , 测试过程将会被忽略。
      maximum-active-time: 如果 housekeeper 检测到某个线程的活动时间大于这个数值 . 它将会杀掉这个线程 . 所以确认一下你的服务器的带宽 . 然后定一个合适的值 . 默认是 5 分钟。经常有些人或许会遇到正在执行的程序忽然拒绝连接,莫明其妙的程序假死,这些都与这个参数的设置有关,我们大部分数据库操作都会在 5 分钟之内完成,可是偏偏有些可能 5 分钟还完成不了,而这个值如果按照默认值的话,连接池就会不管你到底有没有执行完,都会强行关闭数据库连接,所以这个值你可要小心设置哦:)
     maximum-connection-count: 最大的数据库连接数 . 一般的大应用设置 30 就足够了。
     maximum-connection-lifetime: 一个线程的最大寿命 .
     minimum-connection-count: 最小的数据库连接数,一般最好事先初始化一部分连接这样,对于初次连接数据库的应用效率比较高,推荐设置 5 10
     prototype-count: 连接池中可用的连接数量 . 如果当前的连接池中的连接少于这个数值 . 新的连接将被建立 ( 假设没有超过最大可用数 ). 例如 . 我们有 3 个活动连接 2 个可用连接 , 而我们的 prototype-count 4, 那么数据库连接池将试图建立另外 2 个连接 . 这和 minimum-connection-count 不同 . minimum-connection-count 把活动的连接也计算在内 .prototype-count spare connections 的数量 .
      trace: 如果为 true, 那么每个被执行的 SQL 语句将会在执行期被 log 记录 (DEBUG LEVEL). 你也可以注册一个 ConnectionListener ( 参看 ProxoolFacade) 得到这些信息 .

四、结束

     至此有关于 proxool 的讨论到此为止,感觉是不是很简单呢?~没错如果学会的话就是这么简单^_^,至于怎么去在 spring中集成等深入的讨论 ,在我以后的系列中你将会一点一点的接触到。
 
JDBC系列(九):JDBC与数据库连接池(Druid-德鲁伊)使用步骤 目录1.导语(唠唠嗑~~~)2.使用数据库连接池好处3.Druid数据库连接池创建与使用步骤3.1.创建连接池的步骤3.2使用Druid数据库连接池的步骤4.关闭资源与归还至连接池的一点说明 1.导语(唠唠嗑~~~) Druid德鲁伊是阿里巴巴出品的一个数据库连接池,结合了DBCP、C3P0PROXOOL数据库连接池的优点,同时添加了日志监控功能,可以很好的监控D数据库连接池和SQL的执行情况,可以说是市场上目前性价比超高、超好用的数据库连接池。作为国人,我们应为之感到骄傲。 使用连接池,在编码上,仅仅 阅读详情

相关推荐

Proxool数据库连接池管理工具包

Proxool是一种轻量级的Java JDBC连接池库,它的目标是提供简单易用的连接池功能,同时在性能上也不甘落后。相比于其他连接池技术,Proxool不仅能够高效地管理数据库连接,而且提供了更加灵活的配置选项,这对于需要精细控制数据库访问的场景尤其重要。在本文中,我们将深入了解Proxool的工作原理、版本更新、配置方法以及它支持的数据库系统,为IT专业人士提供一个全面的Proxool学习与应用指南。

weixin_32836713的博客 1050

三步完成Hibernate + sql server200 + proxool连接池

第一步:hibernate.cfg.xml 加入: dbpool ProxoolConf.xml org.hibernate.connection.ProxoolConnectionProvider org.hibernate.dialect.SQLServerDialect true True 其他标签就删去吧! 第二步:web.xml 加入:[/b] ServletConfigurator org.logicalcobwebs.proxool.configuration.ServletConfigurator xmlFile WEB-INF/Proxool.xml 1 第三步:新建一个Proxool.xml放在hibernate.cfg.xml同一目录,内容如下:[/b] dbpool jdbc:microsoft:sqlserver://243.155.187.236:1433;DatabaseName=study <driver-

Proxool 0.9.1:高效数据库连接池管理工具

Proxool(PROXy connection POOL)是一个Java数据库连接池库,提供了简单且强大的方式来管理和维护数据库连接。它不仅优化了数据库连接的使用效率,还提供了监控和管理功能,以确保应用的性能和稳定性。

weixin_42393362的博客 1051

proxool 链接sqlserver的配置【转】

配置之前必须引入proxool-0.9.0RC1.jar包。 配置 一:xml方法 首先在WEB-INF目录下创建proxool.xml文件,内容如下: &lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;!-- the proxool configuration can be embedded within your own appli...

非典型程序员 466

proxool连接池连接sql server数据库的问题

proxool连接池连接sql server2005数据库,控制台报:签名信息和同一包里面的另外一个类得签名信息不匹配 Caused by: java.lang.SecurityException: class "com.microsoft.sqlserver.jdbc.ISQLServerConnection FastClassByProxool FastClassByProxool 3407f...

qq_34884729的博客 704

proxool 链接sqlserver的配置

配置之前必须引入proxool-0.9.0RC1.jar包。配置 一:xml方法首先在WEB-INF目录下创建proxool.xml文件,内容如下: xml version="1.0" encoding="UTF-8"?> the proxool configuration can be embedded within your own applications.    An

nedvedno1的专栏 7075

proxool-0.9.0RC3:高效开源数据库连接池的应用与实践

数据库连接池是一组预先配置的数据库连接,这些连接被保存在一个内存池中以供重用。应用程序通过连接池获取数据库连接,执行完数据库操作后,再将连接返回池中,而不是立即关闭它。这有助于减少创建和销毁数据库连接所消耗的资源和时间。proxool的强大之处在于其可扩展性,开发者可以根据自己的需求定制特定的连接池策略。编写自定义策略:proxool允许开发者编写并实现自己的连接池策略,包括连接分配逻辑、超时处理等。集成自定义策略。

weixin_34535286的博客 961

数据库连接池

数据库连接池 数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。 影响因素 数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数制约。无论这些数据库连接是...

weixin_41924879的博客 876

【张小平工作日志】DBCP、c3p0、Druid、Proxool数据库连接池比较

定义 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。 数据库连接池负责分配、管理和释放数据库连接,...

407

什么是数据库连接池

数据库连接池(一) 什么是数据库连接池数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。 JAVA有那些数据库连接池? 1、C3P0:是一个开放源代码的JDBC连接池,它在lib目录中与Hiber...

qq_38266792的博客 1461

java -进阶之路_java 数据库(4)_数据库连接池

系列博客 <<java - 进阶之路>> 总览 数据库连接池 数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。 目录 背景 影响因素 原理 Java连接池...

初级小白_的博客 334

【java web数据库连接池Driud的使用

Druid是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP、PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB连接池

阿牛的博客 1058

Hibernate应用系列之配置连接池

Hibernate应用系列之配置连接池摘要:本文主要分析的是配置Hibernate主流连接池的方法,旨在读者阅读后清楚连接池配置的细节问题以及根据实际情况选取相应的配置方案。     1:连接池的必知概念    首先,我们还是老套的讲讲连接池的基本概念,概念理解清楚了,我们也知道后面是怎么回事了。 以前我们程序连接数据库的时候,每一次连接数据库都要一个连接,用完后再释放。如果频繁的数据库

边城刀声 2407

连接池的理解

文章目录 一,连接池的简介 二,DB连接池的认识 三,DB连接池的作用 四,图文介绍 五,Java中开源的数据库连接池 正文: 一,连接池的简介 连接池用于创建和管理数据库连接的缓冲池技术,缓冲池中的连接可以被任何需要他们的线程使用。当一个线程需要用JDBC对一个数据库操作时,将从池中请求一个连接。当这个连接使用完毕后,将返回到连接池中,等待为其他的线程服务。 二,DB连接池的认识 背景:1.数据库连接是一种关键的有限的昂贵的资源。    2.多用户的网页应用程序中| [即J...

m0_62673085的博客 316

springboot 配置德鲁伊连接池

一、数据库连接池 1.1什么是数据库连接池 数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能 MySQL :: MySQL 8.0 Reference Manual :: 5.1.12.1 Connection Interfaces----------- mysql8.0版本默认最大的连接数量是151 官网数据

金蒂 1万+

java 数据库连接池 开源_在Java中开源的数据库连接池

在Java中开源的数据库连接池有以下几种 :1, C3P0 C3P0是一个开放源代码的JDBC连接池,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象。■c3p0-0.9.5.1 2015-06-162,Proxool 这是一个Java SQL Driver驱动程序,提供了对你选择的其它类型的驱动程序的连接池封装。可以非常简...

weixin_42165973的博客 203

java第三方连接池_数据库连接池的Java连接池

展开全部在Java中开源62616964757a686964616fe4b893e5b19e31333361303030的数据库连接池有以下几种 :1、C3P0:是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate 一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象。2、Proxool:是一个Jav...

weixin_33173924的博客 255
上一篇: 性能测试-TPTP篇(之一)
下一篇: 【涉足Spring系列之一】 数据访问框架
vircomagice
博客等级 码龄21年 1粉丝 6原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值