首页 > 代码库 > 数据库连接池的应用
数据库连接池的应用
连接池应该说是一种思想,一种让资源合理化利用的思想。连接池解决的问题如下:
1.java和数据库建立连接时比较耗时的问题
2.数据库连接建立过多容易死机的问题
3.每个连接不能充分利用的问题
连 接池适合多线程,大量重复的操作数据库项目。连接池的思想是这样的,当你的程序一启动,首先建立一定数目的连接,将连接放置在一个数据结构中,就如同方在 一个池子中一样,当有第一个线程需要访问数据库的时候,从池子中取出一个连接,分配给这个线程,这个线程通过这个连接去访问数据库,使用完毕后,不是关闭 连接,而是将其放回到池子中。再有线程需要的时候再从池子中拿出一个连接。一般来说池子中有多少连接就可以满足多少线程同时访问数据库。如果同时需要的连 接太多,连接池中的连接不够,则根据策略生成新的连接。一般连接池都会有上限,达到上限时就不再建立新的连接,主要是防止连接过多导致机器资源耗尽死机, 此时如果连接池中没有连接,但是仍有线程等待连接则让这些线程继续等待,直到有其他线程用完连接并放置回连接池。以上是连接池的基本思想,比较好的连接池 好需要有其他技术来保证连接池的稳定性和性能。
weblogic的连接池配置好以后,在你的项目中需要使用JNDI来获得DataSource的实例来访问数据库,网上有很多这样的文章,可以找找。
前面说了连接池一般用于多个线程大量重复的操作数据库项目,特别是B/S模式或者C/S模式的多客户基于数据库的系统。所以不论j2ee或者j2se只要满足这个条件都是有必要使用连接池的
代码就不给了,这个地方贴不下,网上可以down到
当应用程序请求一个连接时,连接池为该应用程序分配一个连接而不是重新建立一个连接;当应用程序使用完连接后,该连接被归还给连接池而不是直接释放。
如何实现连接池
确保你每一次的连接使用相同的连接字符串(和连接池相同);只有连接字符串相同时连接池才会工作。如果连接字符串不相同,应用程序就不会使用连接池而是创建一个新的连接。
优点
使 用连接池的最主要的优点是性能。创建一个新的数据库连接所耗费的时间主要取决于网络的速度以及应用程序和数据库服务器的(网络)距离,而且这个过程通常是 一个很耗时的过程。而采用数据库连接池后,数据库连接请求可以直接通过连接池满足而不需要为该请求重新连接、认证到数据库服务器,这样就节省了时间。
缺点
数据库连接池中可能存在着多个没有被使用的连接一直连接着数据库(这意味着资源的浪费)。
技巧和提示
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;