天天看點

連接配接池技術 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收到一個新的資料庫連接配接請求時,它就會走下面的流程:

連接配接池技術 Connection Pooling

最後Entity Framework會幫你管理connection pool,是以不用擔心資料庫連接配接的效率問題。

本文轉自JF Zhu部落格園部落格,原文連結: http://www.cnblogs.com/jfzhu/p/3705703.html   ,如需轉載請自行聯系原作者