1. 程式人生 > >連接池技術 Connection Pooling

連接池技術 Connection Pooling

margin image src 原創 max lan 池技術 cti load

原創地址: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收到一個新的數據庫連接請求時,它就會走下面的流程

技術分享

連接池技術 Connection Pooling