連接池技術 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,所以不用擔心數據庫連接的效率問題。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM