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