文件首頁
MySQL Connector/NET 開發人員指南
相關文件 下載本手冊
PDF (US Ltr) - 1.3Mb
PDF (A4) - 1.3Mb


MySQL Connector/NET 開發人員指南  /  Connector/NET 連線  /  在 Connector/NET 中管理連線池

4.2 在 Connector/NET 中管理連線池

MySQL Connector/NET 支援連線池,以提高資料庫密集型應用程式的效能和可擴展性。預設會啟用此功能。您可以使用連線字串選項 PoolingConnection ResetConnection LifetimeCache Server PropertiesMax Pool SizeMin Pool Size 來關閉它或調整其效能特性。如需更多資訊,請參閱第 4.1 節,〈建立 Connector/NET 連線字串〉

連線池的運作方式是在用戶端處置 MySqlConnection 時,保持與伺服器的原生連線處於啟用狀態。隨後,如果開啟新的 MySqlConnection 物件,則會從連線池建立,而不是建立新的原生連線。這可以提高效能。

準則

為了按照設計運作,最好讓連線池系統管理所有連線。請勿建立可全域存取的 MySqlConnection 實例,然後手動開啟和關閉它。這會干擾連線池的運作方式,並可能導致無法預測的結果,甚至是例外狀況。

簡化操作的一種方法是避免手動建立 MySqlConnection 物件。請改用採用連線字串做為引數的過載方法。透過此方法,Connector/NET 會自動建立、開啟、關閉和解構連線,並使用連線池系統以獲得最佳效能。

Typed Datasets 以及 MembershipProviderRoleProvider 類別會使用此方法。大多數具有採用 MySqlConnection 做為引數的方法的類別,也具有採用連線字串做為引數的方法。這包括 MySqlDataAdapter

您可以改為使用 MySqlHelper 類別的靜態方法,而不是手動建立 MySqlCommand 物件。這些方法會採用連線字串做為引數,並且完全支援連線池。

資源使用量

Connector/NET 每三分鐘執行一次背景工作,並從閒置(未使用)超過三分鐘的連線池中移除連線。連線池清除會釋放用戶端和伺服器端的資源。這是因為在用戶端,每個連線都會使用一個 Socket,而在伺服器端,每個連線都會使用一個 Socket 和一個執行緒。

多個端點。從 Connector/NET 8.0.19 開始,連線字串可以包含多個端點 (server:port),並啟用連線池。在執行階段,Connector/NET 會從集區中隨機選取一個位址(或在提供時依優先順序選取),並嘗試連線到該位址。如果連線嘗試失敗,Connector/NET 會選取另一個位址,直到位址集耗盡為止。每兩分鐘會重試失敗的端點。成功的連線由連線池機制管理。