数据库连接池的配置

一、什么是数据库连接池?

官方:数据库连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的连接进行申请,使用,释放。
个人理解:创建数据库连接是一个很耗时的操作,也容易对数据库造成安全隐患。所以,在程序初始化的时候,集中创建多个数据库连接,并把他们集中管理,供程序使用,可以保证较快的数据库读写速度,还更加安全可靠。

二、为何要使用数据库连接池?

假设网站一天有很大的访问量,数据库服务器就需要为每次连接创建一次数据库连接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出、拓机。
数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现的尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库连接池正式针对这个问题提出来的.数据库连接池负责分配,管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个

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

三、数据库连接池的运行机制

(1)  程序初始化时创建连接池
(2) 使用时向连接池申请可用连接
(3) 使用完毕,将连接返还给连接池
(4) 程序退出时,断开所有连接,并释放资源

作为开源的数据库连接池,C3P0是一个优秀的连接池,性能也十分可靠。

首先到http://sourceforge.net/projects/c3p0/下载相应的jar包,总共三个,如下图所示。

其次将jar包导入到工程当中,然后就可以使用cp30了。

四、数据库连接池的配置

<!--c3p0的配置-->
<!--连接池中保留的最小连接数。-->
<!--连接池中保留的最小连接数。-->
<property name="minPoolSize" value="${jdbc.minPoolSize}"/>
<!--连接池中保留的最大连接数。Default: 15 -->
<property name="maxPoolSize" value="${jdbc.maxPoolSize}"/>
<!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
<property name="initialPoolSize" value="${jdbc.initialPoolSize}"/>
<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
<property name="acquireIncrement" value="${jdbc.acquireIncrement}"/>
<!--JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements
属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。
如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0-->
<property name="maxStatements" value="100"/>
<!-- maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。Default: 0 -->
<property name="maxStatementsPerConnection" value="200"/>
<!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。单位秒 Default: 0 -->
<property name="maxIdleTime" value="600"/>
<!-- 自己实现一条SQL检测语句 -->
<property name="preferredTestQuery" value="SELECT 1"/>
<!--每60秒检查所有连接池中的空闲连接。单位秒 Default: 0 -->
<property name="idleConnectionTestPeriod" value="60"/>
<!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 -->
<property name="acquireRetryAttempts" value="30"/>
<!--定义在从数据库获取新连接失败后重复尝试的间隔时间。Default: 1000 毫秒-->
<property name="acquireRetryDelay" value="5000"/>
<!-- 当连接池用完时客户端调用getConnection()后等待获取新连接的时间,超时后将抛出
SQLException,如设为0则无限期等待。单位毫秒。Default: 0 -->
<property name="checkoutTimeout" value="0"/>
<!--获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效
保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试
获取连接失败后该数据源将申明已断开并永久关闭。Default: false-->
<property name="breakAfterAcquireFailure" value="false"/>
<!--因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的时候都将校验其有效性。
建议使用idleConnectionTestPeriod或automaticTestTable等方法来提升连接测试的性能。Default: false -->
<property name="testConnectionOnCheckout" value="false"/>
<!--因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的时候都将校验其有效性,
因为是个事后操作,所以是异步的,应用端不需要等待测试结果,但同样会造成至少多一倍的数据库调用
建议使用idleConnectionTestPeriod或automaticTestTable等方法来提升连接测试的性能。Default: false -->
<property name="testConnectionOnCheckin" value="false"/>

时间: 2024-10-12 04:50:56

数据库连接池的配置的相关文章

Spring整合HIbernate时,三种数据库连接池的配置和比较

现在常用的开源数据库连接池主要有c3p0.dbcp.proxool三种,其中: Spring                         推荐使用dbcp: Hibernate                  推荐使用c3p0和proxool: 1.  DBCP:Apache DBCP(DataBase connection pool)数据库连接池.是Apache上的一个 java连接池项目,也是 tomcat使用的连接池组件.单独使用dbcp需要3个包:common-dbcp.jar,c

三种数据库连接池的配置及使用(For JDBC)

DBCP 一.导包 Apache官网下载DBCP包,导入两个包路径如下: commons-dbcp-1.4-bin\commons-dbcp-1.4\commons-dbcp-1.4.jar:连接池的实现 commons-pool-1.5.6-bin\commons-pool-1.5.6\commons-pool-1.5.6.jar:连接池实现的依赖库 CSDN上jar包的下载地址:http://download.csdn.NET/detail/u012802702/9491642 二.代码示例

[转]阿里巴巴数据库连接池 druid配置详解

一.背景 java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池.数据库连接池有很多选择,c3p.dhcp.proxool等,druid作为一名后起之秀,凭借其出色的性能,也逐渐映入了大家的眼帘.接下来本教程就说一下druid的简单使用. 二.jar包下载.配置详解及配置示例 1.jar获取 可以从 http://repo1.maven.org/maven2/com/alibaba/druid/ 下载最新的jar包.如果想使用最新的源码编译,也可以从 http

springBoot数据库连接池常用配置

在配置文件中添加配置如下(我使用的是多数据源): spring.datasource.primary.url=jdbc\:mysql\://localhost\:3306/test?useUnicode\=true&characterEncoding\=utf-8spring.datasource.primary.username=testspring.datasource.primary.password=123456spring.datasource.primary.driver-class

spring c3p0数据库连接池连接配置

c3p0连接池配置 xml文件内容如下: C3P0拥有比DBCP更丰富的配置属性,通过这些属性,可以对数据源进行各种有效的控制: acquireIncrement:当连接池中的连接用完时,C3P0一次性创建新连接的数目: acquireRetryAttempts:定义在从数据库获取新连接失败后重复尝试获取的次数,默认为30: acquireRetryDelay:两次连接中间隔时间,单位毫秒,默认为1000: autoCommitOnClose:连接关闭时默认将所有未提交的操作回滚.默认为fals

【java servlet】在java servlet中配置数据库连接池的配置(在server.xml)

<Context path="/" docBase="" debug="0"> <!-- name:给出数据源设置名字: auth:表示该数据源是由谁管理:type:表示类型--> <Resource name="zhaoyan" auth="Container" type="javax.sql.DataSource"/> <ResourcePa

weblogic数据库连接池的配置文件地址

bea\user_projects\domains\gmap\config\jdbc\webdev-jdbc.xml 是webdev-jdbc.xml文件,并不是config文件. 文件内部如下图的样子:在<url></url>内填写数据库地址:端口号:数据库名称

数据库连接池简单介绍和 C3P0的JDBC配置

前面一节我们介绍了怎样利用jdbc连接数据库,已经实现了数据库的连接,可是在实际的项目开发中,能够发现基本上都使用了数据库连接池技术.为什么要使用数据库连接池呢?根源在于对数据库连接的低效管理 答: 普通的JDBC数据库连接,用户请求一次查询的时候就会向数据库发起一次连接.运行完后就断开连接,这种方式会消耗大量的资源和时间.数据库的连接资源并没有得到非常好的重复利用. 若是同一时候有几百人甚至几千人在线.频繁地进行数据库连接操作,这将会占用非常多的系统资源,严重的甚至会造成server的奔溃.这

关于c3p0数据库连接池的简单使用

在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤: 在主程序(如servlet.beans)中建立数据库连接. 进行sql操作 断开数据库连接. 这种模式开发,存在的问题: 普通的JDBC数据库连接使用 DriverManager 来获取,每次向数据库建立连接的时候都要将 Connection 加载到内存中,再验证用户名和密码(得花费0.05s-1s的时间).需要数据库连接的时候,就向数据库要求一个,执行完成后再断开连接.这样的方式将会消耗大量的资源和时间.数据库的连接资源并没有得