摸索ADO.NET連接池使用說明
下面詳細(xì)和準(zhǔn)確的介紹有關(guān)ADO.NET連接池的使用與維護(hù)問題,這些都是學(xué)習(xí)總結(jié)的相關(guān)經(jīng)驗,當(dāng)ADO.NET連接池當(dāng)出現(xiàn)故障轉(zhuǎn)移等錯誤時,會自動清除池。下面就進(jìn)行詳細(xì)說明。
這意味著在執(zhí)行應(yīng)用程序期間,許多相同的連接將反復(fù)地打開和關(guān)閉。 為了使打開的連接成本最低,ADO.NET 使用稱為連接池的優(yōu)化方法。
連接池減少新連接需要打開的次數(shù)。 池進(jìn)程保持物理連接的所有權(quán)。 通過為每個給定的連接配置保留一組活動連接來管理連接。 ADO.NET連接池只要用戶在連接上調(diào)用 Open,池進(jìn)程就會檢查池中是否有可用的連接。 如果某個池連接可用,會將該連接返回給調(diào)用者,而不是打開新連接。 應(yīng)用程序?qū)υ撨B接調(diào)用 Close 時,池進(jìn)程會將連接返回到活動連接池集中,而不是真正關(guān)閉連接。 連接返回到池中之后,ADO.NET連接池即可在下一個 Open 調(diào)用中重復(fù)使用。#t#
在初次打開連接時,將根據(jù)完全匹配算法創(chuàng)建連接池,該算法將池與連接中的連接字符串關(guān)聯(lián)。 每個連接池都與一個不同的連接字符串相關(guān)聯(lián)。 打開新連接時,如果連接字符串并非與現(xiàn)有池完全匹配,將創(chuàng)建一個新池。 按進(jìn)程、按應(yīng)用程序域、按連接字符串以及(在使用集成的安全性時)按 Windows 標(biāo)識來建立池連接。 連接字符串還必須是完全匹配的;按不同順序為同一連接提供的關(guān)鍵字將分到單獨的池中。
在以下 C# 示例中創(chuàng)建了三個新的ADO.NET連接池對象,但是管理時只需要兩個連接池。 注意,根據(jù)為 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 在連接字符串中未指定或指定為零,池中的連接將在一段時間不活動后關(guān)閉。 但是,如果指定的 MinPoolSize 大于零,在 AppDomain 被卸載并且進(jìn)程結(jié)束之前,連接池不會被破壞。 ADO.NET連接池非活動或空池的維護(hù)只需要最少的系統(tǒng)開銷。
注意:


















