MySQL Connector/NET 支援連線池,以提高資料庫密集型應用程式的效能和可擴展性。預設會啟用此功能。您可以使用連線字串選項 Pooling
、Connection Reset
、Connection Lifetime
、Cache Server Properties
、Max Pool Size
和 Min Pool Size
來關閉它或調整其效能特性。如需更多資訊,請參閱第 4.1 節,〈建立 Connector/NET 連線字串〉。
連線池的運作方式是在用戶端處置 MySqlConnection
時,保持與伺服器的原生連線處於啟用狀態。隨後,如果開啟新的 MySqlConnection
物件,則會從連線池建立,而不是建立新的原生連線。這可以提高效能。
為了按照設計運作,最好讓連線池系統管理所有連線。請勿建立可全域存取的 MySqlConnection
實例,然後手動開啟和關閉它。這會干擾連線池的運作方式,並可能導致無法預測的結果,甚至是例外狀況。
簡化操作的一種方法是避免手動建立 MySqlConnection
物件。請改用採用連線字串做為引數的過載方法。透過此方法,Connector/NET 會自動建立、開啟、關閉和解構連線,並使用連線池系統以獲得最佳效能。
Typed Datasets 以及 MembershipProvider
和 RoleProvider
類別會使用此方法。大多數具有採用 MySqlConnection
做為引數的方法的類別,也具有採用連線字串做為引數的方法。這包括 MySqlDataAdapter
。
您可以改為使用 MySqlHelper
類別的靜態方法,而不是手動建立 MySqlCommand
物件。這些方法會採用連線字串做為引數,並且完全支援連線池。
Connector/NET 每三分鐘執行一次背景工作,並從閒置(未使用)超過三分鐘的連線池中移除連線。連線池清除會釋放用戶端和伺服器端的資源。這是因為在用戶端,每個連線都會使用一個 Socket,而在伺服器端,每個連線都會使用一個 Socket 和一個執行緒。
多個端點。從 Connector/NET 8.0.19 開始,連線字串可以包含多個端點 (server
:
port
),並啟用連線池。在執行階段,Connector/NET 會從集區中隨機選取一個位址(或在提供時依優先順序選取),並嘗試連線到該位址。如果連線嘗試失敗,Connector/NET 會選取另一個位址,直到位址集耗盡為止。每兩分鐘會重試失敗的端點。成功的連線由連線池機制管理。