連接池技術 Connection Pooling
阿新 • • 發佈:2017-11-01
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