连接池技术 Connection Pooling

简介:

和数据库建立一个物理连接是一个很耗时的任务,所以无论是ADO.NET还是J2EE都提供了一个连接池的技术。

 

一个池其实就是一个列表。在ADO.NET中,有一个Connection Manager,它对每一个connection string都管理着一个可用连接的列表,这个列表就是Connection Pool。

 

当第一次数据库连接被初始化时,connection manager会创建一个Connection Pool Group。当第一次连接被打开的时候,才会创建第一个connection pool。一个连接正在被使用中,就会从connection pool中移除;如果使用完(被close或dispose),就会再返回到connection pool中去,以待下一个连接请求使用,所以我们要清楚一个概念,close connection的动作只是关闭了逻辑连接,但并没有关闭物理连接。

 

在ADO.NET中,默认情况下,一个连接返回到connection pool中,会有4到8分钟的空闲时间,超过这个时间,就会关闭物理连接。如果你的程序有很长时间的空闲时间,你应该确保至少有一个可用的数据库连接,可以通过设置Min Pool Size为1来实现。

 

另外决定是否一个连接使用的是相同connection string的决定性参数为以下几个:

  • Connection Timeout
  • Min Pool Size
  • Max Pool Size
  • Pooling
  • Connection Reset
  • Load Balancing Timeout(Connection Lifetime)
  • Enlist

每当Connection Manager收到一个新的数据库连接请求时,它就会走下面的流程:

 

最后Entity Framework会帮你管理connection pool,所以不用担心数据库连接的效率问题。















本文转自JF Zhu博客园博客,原文链接: http://www.cnblogs.com/jfzhu/p/3705703.html   ,如需转载请自行联系原作者




相关文章
|
3月前
|
SQL Java 数据库连接
Connection(数据库连接对象)
Connection(数据库连接对象)
28 0
Kam
|
druid
druid数据连接池异常 connection holder is null 解决方案
druid数据连接池异常 connection holder is null 解决方案
Kam
1617 0
|
7月前
|
SQL 缓存 关系型数据库
连接池设置
连接池设置
64 0
|
8月前
Kelvin Connection(开尔文连接)
Kelvin Connection(开尔文连接)
361 0
|
10月前
|
监控 Java 数据库连接
c3p0连接池
c3p0连接池
97 0
连接池问题
连接池问题
130 0
|
监控 网络协议 druid
连接池配置你真的会吗?
连接池配置你真的会吗?
335 0
|
SQL Java 关系型数据库
连接池的总结
连接池的总结
179 0
|
数据库 NoSQL MongoDB
连接池原来这么简单(一分钟系列)
希望这一分钟大家有收获。
1251 0
|
关系型数据库
C3P0连接池
做常用的连接池技术!Spring框架,默认支持C3P0连接池技术。 核心类 CombopooledDataScore ds; 基本使用 1.下载,导包 2.
1441 0