数据库连接池

Posted ericz2j

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库连接池相关的知识,希望对你有一定的参考价值。

1.为什么要用连接池?
在实际应用开发中,特别是在WEB应用系统中,如果JSP、Servlet或EJB使用JDBC直接访问数据库中的数据,每一次数据访问请求都必须经历建立数据库连接、打开数据库、存取数据和关闭数据库连接等步骤,而连接并打开数据库是一件既消耗资源又费时的工作,如果频繁发生这种数据库操作,系统的性能必然会急剧下降,甚至会导致系统崩溃。数据库连接池技术是解决这个问题最常用的方法,在许多应用程序服务器(例如Weblogic,WebSphere,JBoss,Tomcat)中,基本都提供了这项技术,无需自己编程。


2.常见连接池
dbcp(不建议使用),c3p0以及阿里巴巴的druid


3.配置(下面以c3p0为例)
3.1 首先导入jar包
c3p0-0.9.1.2.jar
3.2 在src创建该配置文件 (如果要自动加载的话 名字必须是这个,并且是在src路径下,并且第一行前面不能有空行)
c3p0-config.xml:

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property name="user">root</property>
<property name="password">abc</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://estoresystem</property>
</default-config> 
</c3p0-config>


4.连接池的部分核心参数
initialPoolSize: 连接池初始化时创建的连接数,default : 3
minPoolSize: 连接池保持的最小连接数,default : 3
maxPoolSize: 连接池中拥有的最大连接数,如果获得新连接时会使连接总数超过这个值则不会再获取新连接,而是等待其他连接释放,所以这个值有可能会设计地很大,default : 15
acquireIncrement: 连接池在无空闲连接可用时一次性创建的新数据库连接数,default : 3
maxIdleTime: 连接的最大空闲时间,如果超过这个时间,某个数据库连接还没有被使用,则会断开掉这个连接。如果为0,则永远不会断开连接,默认为0;
maxConnectionAge: 配置连接的生存时间,超过这个时间的连接将由连接池自动断开丢弃掉。


5.使用方法
在我们的数据库工具类中

private static ComboPooledDataSource datasource = new ComboPooledDataSource();

这样子就能获得一个连接池对象 ,在一个项目中有一个连接池就够了,因为一个连接池里面可以放多个连接。
注意:这样子写会默认去加载src路径下的c3p0-config.xml配置文件

以上是关于数据库连接池的主要内容,如果未能解决你的问题,请参考以下文章

数据库连接池原理详解与自定义连接池实现

连接池的基本原理? 以及使用连接池的好处?

面试题:数据库连接池原理详解与自定义连接池实现

Node.js实现MySQL数据库连接池

连接池工作原理

spring连接池配置详解