zoukankan      html  css  js  c++  java
  • 连接池技术 Connection Pooling

    原创地址:http://www.cnblogs.com/jfzhu/p/3705703.html

    转载请注明出处

    和数据库建立一个物理连接是一个很耗时的任务,所以无论是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,所以不用担心数据库连接的效率问题。

  • 相关阅读:
    代码间距的由来和解决方法
    径向渐变
    倒计时原理
    javascript原型模式理解
    倒计时原理和折叠收缩
    highcharts注意事项
    jsp注释前台不可见
    启动Tomcat任何程序都报错
    面试题
    eclipse不自动弹出提示(alt+/快捷键失效)
  • 原文地址:https://www.cnblogs.com/jfzhu/p/3705703.html
Copyright © 2011-2022 走看看