数据库连接池
来源:互联网 发布:sql2000怎么导入数据 编辑:程序博客网 时间:2024/04/20 06:37
1、定义
数据库连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的连接进行申请,使用,释放。
创建数据库连接是一个很耗时的操作,也容易对数据库造成安全隐患。所以,在程序初始化的时候,集中创建多个数据库连接,并把他们集中管理,供程序使用,可以保证较快的数据库读写速度,还更加安全可靠。
2、运行机制
(1) 程序初始化时创建连接池
(2) 使用时向连接池申请可用连接
(3) 使用完毕,将连接返还给连接池
(4) 程序退出时,断开所有连接,并释放资源
3、开源包
c3p0,dbcp
4、Spring中的连接池
在spring中,常使用数据库连接池来完成对数据库的连接配置,类似于线程池的定义。
数据库连接池,即有一定数量数据库连接的一个缓冲池,一方面,能够即取即用,免去初始化的时间;另一方面,用完的数据连接会归还到连接池中,免去了不必要的连接创建、销毁工作,提升了性能。
常用的连接池有:jdbc,dbcp,c3p0,JNDI。
spring框架推荐使用dbcp,hibernate框架推荐使用c3p0。
经测试发现,c3p0与dbcp相比较,c3p0能够更好的支持高并发,但是在稳定性方面略逊于dpcp。
1、JDBC连接池
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"> </property> <property name="url" value="jdbc:mysql://localhost:3306/yc" /> <property name="username" value="yc"></property> <property name="password" value="yc"></property></bean>
2、DBCP连接池
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"><!--设置为close使Spring容器关闭同时数据源能够正常关闭,以免造成连接泄露 --> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/yc" /> <property name="username" value="yc" /> <property name="password" value="yc" /> <property name="defaultReadOnly" value="false" /><!-- 设置为只读状态,配置读写分离时,读库可以设置为true --> <!-- 在连接池创建后,会初始化并维护一定数量的数据库安连接,当请求过多时,数据库会动态增加连接数, 当请求过少时,连接池会减少连接数至一个最小空闲值 --> <property name="initialSize" value="5" /><!-- 在启动连接池初始创建的数据库连接,默认为0 --> <property name="maxActive" value="15" /><!-- 设置数据库同一时间的最大活跃连接默认为8,负数表示不闲置 --> <property name="maxIdle" value="10"/><!-- 在连接池空闲时的最大连接数,超过的会被释放,默认为8,负数表示不闲置 --> <property name="minIdle" value="2" /><!-- 空闲时的最小连接数,低于这个数量会创建新连接,默认为0 --> <property name="maxWait" value="10000" /><!-- 连接被用完时等待归还的最大等待时间,单位毫秒,超出时间抛异常,默认为无限等待 --></bean>
3、C3P0连接池
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="com.mysql.jdbc.Driver" /> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/yc" /> <property name="user" value="yc" /> <property name="password" value="yc" /></bean>
阅读全文
0 0
- 数据库连接池
- 数据库连接池
- 数据库连接池
- 数据库连接池
- 数据库连接池
- 数据库连接池
- 数据库连接池
- 数据库连接池
- 数据库连接池
- 数据库连接池
- 数据库连接池
- 数据库连接池
- 数据库连接池
- 数据库连接池
- 数据库连接池
- 数据库连接池
- 数据库连接池
- 数据库连接池
- Annual summary(年度总结)--数据总结篇
- UVA11270 轮廓线DP
- AVL 树和红黑树,该用哪一个?
- 学习嵌入式Linux系统开发基础 第七课(makefile)
- C#机房登录之七层数据走向
- 数据库连接池
- 大话数据结构---思维导图
- html中location的用法详解
- log4j学习
- Django文件存储(二)定制存储系统
- 使用HTML语言和CSS开发商业站点_初识CSS
- 编程积累-数组
- maven本地库安装以及JAR包服务器部署
- Servlet的多线程和线程安全 线程安全 首先说明一下对线程安全的讨论,哪种情况我们可以称作线程安全? 网上对线程安全有很多描述,我比较喜欢《Java并发编程实战》给出的定义,“当多个线程