Spring配置-数据库连接池proxool[转]

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

  数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。

  数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。数据库连接池的最小连接数和最大连接数的设置要考虑到下列几个因素:

1) 最小连接数是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费;

2) 最大连接数是连接池能申请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求将被加入到等待队列中,这会影响之后的数据库操作。

3) 如果最小连接数与最大连接数相差太大,那么最先的连接请求将会获利,之后超过最小连接数量的连接请求等价于建立一个新的数据库连接。不过,这些大于最小连接数的数据库连接在使用完不会马上被释放,它将被放到连接池中等待重复使用或是空闲超时后被释放。

目前常用的连接池有:C3P0、DBCP、Proxool

网上的评价是:

C3P0比较耗费资源,效率方面可能要低一点。

DBCP在实践中存在BUG,在某些种情会产生很多空连接不能释放,Hibernate3.0已经放弃了对其的支持。

Proxool的负面评价较少,现在比较推荐它,而且它还提供即时监控连接池状态的功能,便于发现连接泄漏的情况。

配置如下:

1、在spring配置文件中,一般在applicationContext.xml中

<bean id="proxoolDataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource">

<property name="driver" value="${jdbc.connection.driverClassName}"/>

<property name="driverUrl" value="${jdbc.connection.url}"/>

<property name="user" value="${jdbc.connection.username}"/>

<property name="password" value="${jdbc.connection.password}"/>

<!-- 测试的SQL执行语句 -->

<property name="houseKeepingTestSql" value="${proxool.houseKeepingTestSql}"/>

<!-- 最少保持的空闲连接数 (默认2个) -->

<property name="prototypeCount" value="${proxool.prototypeCount}"/>

<!-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁 默认30秒) -->

<property name="houseKeepingSleepTime" value="${proxool.hourseKeepingSleepTime}"/>

<!-- 最大活动时间(超过此时间线程将被kill,默认为5分钟) -->

<property name="maximumActiveTime" value="${proxool.maximumActiveTime}"/>

<!-- 连接最长时间(默认为4个小时) -->

<property name="maximumConnectionLifetime" value="${proxool.maximumConnectionLifetime}"/>

<!-- 最小连接数 (默认2个) -->

<property name="minimumConnectionCount" value="${proxool.minimumConnectionCount}"/>

<!-- 最大连接数 (默认5个) -->

<property name="maximumConnectionCount" value="${proxool.maximumConnectionCount}"/>

<!-- -->

<property name="statistics" value="${proxool.statistics}"/>

<!-- 别名 -->

<property name="alias" value="${proxool.alias}"/>

<!-- -->

<property name="simultaneousBuildThrottle" value="${proxool.simultaneous-build-throttle}"/>

</bean>

然后注入到sessionFactory中

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

<property name="dataSource" ref="proxoolDataSource"/>

</bean>

Porxool 配置文件

--==--==--==--==--==<proxool.xml>==--==--==--==--==--==--==

<?xml version="1.0" encoding="UTF-8"?>

<proxool>

<alias>WMS</alias>

<driver-url>jdbc:postgresql://192.168.210.184:5432/wms</driver-url>

<driver-class>org.postgresql.Driver</driver-class>

<driver-properties>

<property name="user" value="wms_user" />

<property name="password" value="wms" />

</driver-properties>

<minimum-connection-count>2</minimum-connection-count>

<maximum-connection-count>40</maximum-connection-count>

<simultaneous-build-throttle>20</simultaneous-build-throttle>

<prototype-count>2</prototype-count>

<house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql>

</proxool>

--==--==--==--==--==<proxool.xml>==--==--==--==--==--==--==

配置说明:

alias                                          -〉数据库连接别名(程序中需要使用的名称)

driver-url                                   -〉数据库驱动

driver-class                                -〉驱动程序类

driver-properties                        -〉联机数据库的用户和密码

minimum-connection-count          -〉最小连接数量,建议设置0以上,保证第一次连接时间

maximum-connection-count         -〉最大连接数量,如果超过最大连接数量则会抛出异常。连接数设置过多,服务器CPU和内存性能消耗很

大。

simultaneous-build-throttle          -〉同时最大连接数

prototype-count                          -〉一次产生连接的数量。

例:如果现在prototype-count设置为4个,但是现在已经有2个可以获得的连接,那么

将会试图再创建2个连接。

但不能超过最大连接数。

maximum-active-time                 -〉连接最大时间活动 默认5分钟

maximum-connection-lifetime      -〉连接最大生命时间 默认4小时

转自

原文地址:https://www.cnblogs.com/jimcsharp/p/9884423.html

时间: 2024-11-06 09:34:50

Spring配置-数据库连接池proxool[转]的相关文章

Spring配置数据库连接池Druid

连接池原理 连接池基本的思想是在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象.使用完毕后,用户也并非将连接关闭,而是将连接放回连接池中,以供下一个请求访问使用.而连接的建立.断开都由连接池自身来管理.同时,还可以通过设置连接池的参数来控制连接池中的初始连接数.连接的上下限数以及每个连接的最大使用次数.最大空闲时间等等,也可以通过其自身的管理机制来监视数据库连接的数量.使用情况等. 常用数据库连接池及特

数据库连接池proxool的两种使用方式

数据库连接池可以通过两种方式来应用,针对web应用和非web应用而来. 非web应用的数据库连接池配置 第一种方式:工厂类 非web应用可以使用工厂模式将数据库连接创建封装在一个工具类中,工具类中又使用单例模式来创建加载驱动,代码如下: 工厂类:ConnectPoolFactory.java 1 import java.io.InputStream; 2 import java.sql.Connection; 3 import java.sql.DriverManager; 4 import j

Spring配置连接池

---------------------siwuxie095 Spring 配置连接池 1.Spring 配置内置连接池 在 applicationContext.xml 中添加如下内容: <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName&qu

springboot配置数据库连接池druid、整合mybatis、整合pagehelper

springboot配置数据库连接池druid druid所需pom依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version> </dependency> <dependency> <groupId>o

Tomcat配置数据库连接池

上篇博文中记录了使用数据库连接池的重要性和如何用java代码自己写一个连接池,网上查了一番 发现原来像tomcat这种服务器自带了连接池,可以通过配置文件直接使用,下面来介绍一下使用方法. 本例为myeclipse+tomcat7.0+sqlserver2008配置数据库连接池 具体步骤: 1. 在server.xml中设置数据源,以sql server 2008数据库为例,如下: 在<GlobalNamingResources> </GlobalNamingResources>节

项目重构之数据源配置与优化:log4j 配置数据库连接池Druid,并实现日志存储到数据库

作者:泥沙砖瓦浆木匠 个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节. 如果我的帮到了你,是否乐意捐助一下或请一杯啤酒也好呢?有你支持,干的更好~ 点这参与众筹 我的支付宝:13958686678 一. 前言 泥瓦匠又和大家见面了,最近两天我在Code Review ,顺便代码小小的Refactoring(重构)下.先了解这个项目吧,这次解决的是数据源配置优化.因为这web项目中配置数据源的地方很多.例如JDBC要配置数据源,Mybatis要配置数据源,Quartz定时任务要配

配置数据库连接池的技巧

对于对性能要求较高的企业级应用来说用JDBC连接数据库的方式一般满足不了要求,这时就要用到数据库连接池了.对于连接池应该并不陌生吧,你可以学习JAVA基础教程了解. 数据库连接池负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个:释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏.这项技术能明显提高对数据库操作的性能. 配置数据库连接池的两种方法 Tomcat服务器配置步骤: 1.把下面这段代码粘贴D:\apa

项目经验——jboss 配置数据库连接池

数据库的连接和关闭是非常消耗系统资源的,在多层结构的应用环境中,这种资源消耗又直接的反映到系统性能上来.在项目实际应用中,最常用的解决方案便是建立数据库连接池. 一.数据库连接池基本原理 当程序启动时,系统主动建立出足够的数据库连接,并将这些连接组成一个连接池.每次应用程序请求数据库连接时,无需重新建立,直接从链接池中获取已建立连接.使用完毕后,无需关闭,直接归还给数据库连接池,以备其他程序调用.通过连接池,大大提高了程序运行效率. 二 .数据库连接池常用参数 连接池初始连接数 连接池最大连接数

Java数据库连接池-proxool

连接池技术的思想: 连接复用(高效.安全),避免数据库频繁建立.关闭的开销 --------------------极客学院(参考lulei) 1.配置文件 <proxool> <!-- 连接池别名 --> <alias>localmysqldb</alias> <!-- 连接数据库的驱动URL --> <driver-url><![CDATA[jdbc:mysql://127.0.0.1:3306/test?character