摸索ADO.NET連接池使用說明
下面詳細和準確的介紹有關ADO.NET連接池的使用與維護問題,這些都是學習總結的相關經驗,當ADO.NET連接池當出現故障轉移等錯誤時,會自動清除池。下面就進行詳細說明。
這意味著在執行應用程序期間,許多相同的連接將反復地打開和關閉。 為了使打開的連接成本最低,ADO.NET 使用稱為連接池的優化方法。
連接池減少新連接需要打開的次數。 池進程保持物理連接的所有權。 通過為每個給定的連接配置保留一組活動連接來管理連接。 ADO.NET連接池只要用戶在連接上調用 Open,池進程就會檢查池中是否有可用的連接。 如果某個池連接可用,會將該連接返回給調用者,而不是打開新連接。 應用程序對該連接調用 Close 時,池進程會將連接返回到活動連接池集中,而不是真正關閉連接。 連接返回到池中之后,ADO.NET連接池即可在下一個 Open 調用中重復使用。#t#
在初次打開連接時,將根據完全匹配算法創建連接池,該算法將池與連接中的連接字符串關聯。 每個連接池都與一個不同的連接字符串相關聯。 打開新連接時,如果連接字符串并非與現有池完全匹配,將創建一個新池。 按進程、按應用程序域、按連接字符串以及(在使用集成的安全性時)按 Windows 標識來建立池連接。 連接字符串還必須是完全匹配的;按不同順序為同一連接提供的關鍵字將分到單獨的池中。
在以下 C# 示例中創建了三個新的ADO.NET連接池對象,但是管理時只需要兩個連接池。 注意,根據為 Initial Catalog 分配的值,第一個和第二個連接字符串有所不同。
1: using (SqlConnection connection = new SqlConnection(
2: "Integrated Security=SSPI;Initial Catalog=Northwind"))
3: { 4: connection.Open();5: // Pool A is created.
6: } 7: 8: using (SqlConnection connection = new SqlConnection(
9: "Integrated Security=SSPI;Initial Catalog=pubs"))
10: { 11: connection.Open();12: // Pool B is created because the connection strings differ.
13: } 14: 15: using (SqlConnection connection = new SqlConnection(
16: "Integrated Security=SSPI;Initial Catalog=Northwind"))
17: { 18: connection.Open();19: // The connection string matches pool A.
20: }如果 MinPoolSize 在連接字符串中未指定或指定為零,池中的連接將在一段時間不活動后關閉。 但是,如果指定的 MinPoolSize 大于零,在 AppDomain 被卸載并且進程結束之前,連接池不會被破壞。 ADO.NET連接池非活動或空池的維護只需要最少的系統開銷。
注意:

















