net平台下连接池

http://www.cnblogs.com/visionwang/archive/2012/11/16/2774203.html

net平台下连接池概述

ADO.NET已经为我们提供这样的连接池管理,每个连接字符串产生一个连接池,设置了池的最大连接数,尽管你在DBConnection上使用close或者dispose,连接都没有被关闭,其实是返回到池,由池来管理这些连接,等待下次请求。除非连接池中的连接全部关闭,连接池才从内存中释放。多个不同的的连接字符串,产生多个连接池。

如何实现连接池?

确保你每一次的连接使用相同的连接字符串(和连接池相同);只有连接字符串相同时连接池才会工作。如果连接字符串不相同,应用程序就不会使用连接池而是创建一个新的连接。

优点

使用连接池的最主要的优点是性能。创建一个新的数据库连接所耗费的时间主要取决于网络的速度以及应用程序和数据库服务器 的(网络)距离,而且这个过程通常是一个很耗时的过程。而采用数据库连接池后,数据库连接请求可以直接通过连接池满足而不需要为该请求重新连接、认证到数 据库服务器,这样就节省了时间。

缺点

数据库连接池中可能存在着多个没有被使用的连接一直连接着数据库(这意味着资源的浪费)。

技巧和提示

1. 当你需要数据库连接时才去创建连接池,而不是提前建立。一旦你使用完连接立即关闭它,不要等到垃圾收集器来处理它。

2. 在关闭数据库连接前确保关闭了所有用户定义的事务。

3. 不要关闭数据库中所有的连接,至少保证连接池中有一个连接可用。如果内存和其他资源是你必须首先考虑的问题,可以关闭所有的连接,然后在下一个请求到来时创建连接池。

连接池FAQ

1. 何时创建连接池?

当第一个连接请求到来时创建连接池;连接池的建立由数据库连接的连接字符创来决定。每一个连接池都与一个不同的连接字符串相关。当一个新的连接请求到来时如果连接字符串和连接池使用的字符串相同,就从连接池取出一个连接;如果不相同,就新建一个连接池。

2. 何时关闭连接池?

当连接池中的所有连接都已经关闭时关闭连接池。

3. 当连接池中的连接都已经用完,而有新的连接请求到来时会发生什么?

当连接池已经达到它的最大连接数目时,有新的连接请求到来时,新的连接请求将放置到连接队列中。当有连接释放给连接池时,连接池将新释放的连接分配给在队列中排队的连接请求。你可以调用close和dispose将连接归还给连接池。

4. 我应该如何允许连接池?

对于.NET应用程序而言,默认为允许连接池。(这意味着你可以不必为这件事情做任何的事情)当然,如果你可以在SQLConnection对象的连接字符串中加进Pooling=true;确保你的应用程序允许连接池的使用。

5. 我应该如何禁止连接池?

ADO.NET默认为允许数据库连接池,如果你希望禁止连接池,可以使用如下的方式:

1) 使用SQLConnection对象时,往连接字符串加入如下内容:Pooling=False;

2) 使用OLEDBConnection对象时,往连接字符串加入如下内容:OLE DB Services=-4;

时间: 2024-10-06 08:01:31

net平台下连接池的相关文章

Linux平台下线程池的原理及实现

转自:http://blog.csdn.net/lmh12506/article/details/7753952 前段时间在github上开了个库,准备实现自己的线程池的,因为换工作的事,一直也没有实现,参考这篇文章准备着手实现一下. 什么时候需要创建线程池呢?简单的说,如果一个应用需要频繁的创建和销毁线程,而任务执行的时间又非常短,这样线程创建和销毁的带来的开销就不容忽视,这时也是线程池该出场的机会了.如果线程创建和销毁时间相比任务执行时间可以忽略不计,则没有必要使用线程池了. 下面是Linu

java的几种连接池

连接池的管理用了了享元模式,这里对连接池进行简单设计. 一.设计思路 1.连接池配置属性DBbean:里面存放可以配置的一些属性 2.连接池接口IConnectionPool:里面定义一些基本的获取连接的一些方法 3.接口实现ConnectionPool:对上面操作进行实现,并加入一些其他方法 4.连接池管理ConnectionPoolManager:管理所有的不同的连接池,所有的连接都能通过这里进行获得连接 5.另外还有几个测试类,和连接信息模拟的类,这里就不进行xml 和配置文件信息的读取了

性能测试(九)连接池和线程

之前的博客中,有说的性能测试常见术语:连接池.其中大概简述了连接池的作用等,这篇博客,就介绍下连接池以及连接池中线程对象的原理,作用以及优点... 一.连接池 1.什么是连接池?我们为什么需要它? 连接池允许多个客户端使用缓存起来的连接对象,这些对象可以连接数据库,它们是共享的.可被重复使用的. 打开/关闭数据库连接开销很大,连接池技术允许我们在连接池里维护连接对象,这样可以提高数据库的执行命令的性能.多个客户端请求可以重复使用相同的连接对象,当每次收到一个客户端请求时, 就会搜索连接池,看看有

几个主流的Java连接池整理

池(Pool)技术在一定程度上可以明显优化服务器应用程序的性能,提高程序执行效率和降低系统资源开销.这里所说的池是一种广义上的池,比如数据库连接池.线程池.内存池.对象池等.其中,对象池可以看成保存对象的容器,在进程初始化时创建一定数量的对象.需要时直接从池中取出一个空闲对象,用完后并不直接释放掉对象,而是再放到对象池中以方便下一次对象请求可以直接复用.其他几种池的设计思想也是如此,池技术的优势是,可以消除对象创建所带来的延迟,从而提高系统的性能. 要了解Java连接池我们先要了解数据库连接池(

通过连接池和字段索引,提升单点登录cas的性能

cas是多个系统的中心认证,认证的过程就是用户的登录信息和数据库中的信息匹对的过程,如果某一时刻登录的人数很多,需要频繁的读取数据库,数据库连接的管理就是问题. 前天测试评教时无意之中把单点登录的问题暴露出来了,平时通过cas登录管理端是没有问题的,而200人同时通过cas登陆学生端时出现异常 org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested excep

几个主流java连接池

池(Pool)技术在一定程度上可以明显优化服务器应用程序的性能,提高程序执行效率和降低系统资源开销.这里所说的池是一种广义上的池,比如数据库连接池.线程池.内存池.对象池等.其中,对象池可以看成保存对象的容器,在进程初始化时创建一定数量的对象.需要时直接从池中取出一个空闲对象,用完后并不直接释放掉对象,而是再放到对象池中以方便下一次对象请求可以直接复用.其他几种池的设计思想也是如此,池技术的优势是,可以消除对象创建所带来的延迟,从而提高系统的性能. 要了解Java连接池我们先要了解数据库连接池(

《java数据源—连接池》

<java数据源-连接池>1.数据源的分类:直接数据源.连接池数据源.2.连接池.数据源.JNDI a.数据源:Java中的数据源就是连接到数据库的一条路径,数据源中并无真正的数据,它仅仅记录的是你连接到哪个数据库,以及如何连接. b.连接池:简单的说就是保存所有的数据库连接的地方,在系统初始化时,将数据库连接对象存储到内存里,当用户需要访问数据库的时候,并不是建立一个新的连接,而是从连接池中 取出一个已经建立好的空闲连接对象.而连接池负责分配.管理.释放数据库连接对象.注意的是:连接池是由容

转 聊聊连接池和线程

https://www.cnblogs.com/imyalost/p/7189455.html 之前的博客中,有说到性能测试常见术语:连接池.其中大概简述了连接池的作用等,这篇博客,就介绍下连接池以及连接池中线程对象的原理,作用以及优点... 一.连接池 1.什么是连接池?我们为什么需要它? 连接池允许多个客户端使用缓存起来的连接对象,这些对象可以连接数据库,它们是共享的.可被重复使用的. 打开/关闭数据库连接开销很大,连接池技术允许我们在连接池里维护连接对象,这样可以提高数据库的执行命令的性能

spring下,druid,c3p0,proxool,dbcp四个数据连接池的使用和配置

由于那天Oracle的数据连接是只能使用dbcp的数据库连接池才连接上了,所以决定试一下当下所有得数据库连接池连接orcale和mysql,先上代码 配置文件的代码 1 #=================dbcp连接池======================# 2 #Oracle数据库连接 3 #jdbc_driverClassName=oracle.jdbc.driver.OracleDriver 4 #jdbc_url=jdbc:oracle:thin:@localhost:1521: