連接池 – 行動應用程式開發、Web 服務、SOA 架構 – 技術
跳至內容

連接池 - 移動應用程序開發、Web 服務、SOA 架構

廣告

什麼是連接池?

連接池允許重用現有連接,以減少不斷創建和刪除具有相同配置的連接的開銷。換句話說,打開和關閉使用相同連接字符串和憑據的連接可以重用池中的可用連接。典型的應用程序使用相同的連接對象來不斷地從數據庫獲取和更新數據。連接池消除了數據庫不斷創建和刪除連接的需要,從而提供了更高級別的性能。連接池按進程、應用程序域和連接字符串分隔。對於使用集成安全性的連接字符串,將為每個唯一標識創建一個單獨的池。

控制連接池選項

創建 ADO.NET 連接對象時,連接池默認處於打開狀態。您可以通過為連接池設置特定的連接字符串關鍵字來控制連接池行為(或完全禁用連接池)。例如,要專門禁用連接池,請在連接字符串中設置 Pooling=False。表 5-7 提供了可用於控制特定連接如何與連接池交互的連接字符串關鍵字列表。並非所有關鍵字都適用於所有提供商。例如,OLE DB 提供程序根據連接字符串中 OLE DB Services 關鍵字設置的值來跟踪連接池(也稱為資源池或會話)。

表連接池連接字符串除了控制連接池行為的連接字符串屬性之外,連接對像上還有一些方法也可以影響連接池。當您關閉應用程序中的連接並且您知道它們不會再次使用時,通常會使用可用的方法。這通過丟棄連接來清理連接池,而不是在關閉連接時將它們返回到池中。任何已在池中並打開的連接將在下次關閉時被丟棄。表 5-8 列出了可用於與連接池交互的方法。

配置連接以使用連接池

默認情況下,ADO.NET 中可用的所有 .NET Framework 數據提供程序都啟用了連接池,但可用於使用連接池的控制級別因所使用的提供程序而異。

使用 SQL Server 連接配置連接池

默認情況下,SqlConnection 對象自動使用連接池。每次使用唯一的連接字符串調用 Sqlconnection.Open 時,都會創建一個新池。通過在連接字符串中設置連接池關鍵字來控制連接池行為,如表 5-7 中所述。例如,考慮一個要設置最小池大小的連接。通過為 Mîn Pool Size 關鍵字分配一個大於零的值,可以確保池在應用程序終止之前不會被破壞。要將最小池大小設置為 5,請使用類似於以下內容的連接字符串:

數據源=SqlServerName;初始目錄=DatabaseName;集成安全性=True;最小池大小=5

最小池大小默認為0,這意味著每個連接都需要根據請求創建和初始化,增加連接字符串中的最小池大小,指示數量的連接被創建並準備使用,這樣可以減少時間在這些初始連接上建立連接需要花費時間。

使用 Oracle 連接配置連接池

默認情況下,使用 .NET Framework Data Provider for Oracle 的連接會自動使用連接池。您可以通過設置連接字符串關鍵字來控制連接如何使用池。表 5-10 詳細介紹了可用於更改連接池活動的連接字符串關鍵字。

連接錯誤處理

當 SQL Server 返回警告或錯誤時,SQL Server 的 .NET Framework 數據提供程序會創建並引發 SqlException,您可以在應用程序中捕獲該異常來處理問題。引發 SqlException 時,檢查 SqlException.Errors 屬性以訪問從 SQL Server 返回的錯誤集合。 SqlException.Errors 屬性是一個 SqlErrorCollection 類(SqlError 類的集合),它始終至少包含一個 SqlError 對象。

更多信息 SQL Server 錯誤

對於嚴重性級別為 19 或更低的消息,SqlConnection 將保持打開狀態,但當嚴重性級別為 20 或更高時,SqlConnection 通常會自動關閉。

概括

  • 默認情況下啟用連接池。
  • 連接池選項在連接字符串中定義,但 ODBC 提供程序除外,它使用 Windows 上的 ODBC 數據源管理器對話框。
  • 當在 SQL 服務器上檢測到錯誤時,將創建 SqlException 對象。
  • SqlException 異常的每個實例至少包含一個 SqlError 警告,其中包含實際的服務器錯誤信息。
  • Windows 身份驗證(也稱為集成安全性)是安全連接數據的建議方法。
  • 將包含敏感信息的連接字符串存儲在應用程序的配置文件中,並對包含敏感信息的所有設置進行加密。