了解連線處理

已完成

MySQL 支援兩種廣泛的連線類別:

  • 短期存在 - 短時間開啟以執行簡單查詢的連線。 MySQL 的結構是針對這種類型的工作負載所設計,每秒最多處理 8 萬個連線和中斷連線。
  • 長期存在 - 「無限期」開啟的連線,例如網頁伺服器或應用程式伺服器。 在此案例中,用戶端會連線到 MySQL 伺服器,然後在用戶端伺服器停止之前都不會中斷連線,使連線持續數週或數個月。

伺服器參數 max_connections 會定義允許的用戶端連線數目上限。 達到此最大值之後,MySQL 將不會允許任何新的連線,直到作用中連線中斷連線為止。

連線共用和持續性連線

應用程式管理資料庫連線的方式可能會對資料庫的整體效能產生重大影響。 您應該要減少:

  • 建立連線的次數。
  • 建立金鑰程式碼路徑中連線的時間。

為了獲得最佳結果,請考慮使用連線共用或持續性連線,來連線到適用於 MySQL 的 Azure 資料庫伺服器。

連線共用可用來處理建立、管理及配置資料庫連線。 需要資料庫連線時,優先順序是配置現有的閒置資料庫連線,而非建立新的連線。 連線完成之後,其隨即會復原,以便再次使用,而不是關閉。 請參閱 Java 範例以說明連線共用 | Microsoft Docs

持續性連線與連線共用的概念類似。 持續性連線會取代短期存在連線 (通常以長期存在連線在 < 5-10 毫秒內執行的短期存在連線)。 這項變更通常只需要對程式碼進行微幅變更,但可能會對一般應用程式案例進行重大效能改善。 此方法可避免針對每個新查詢建立新的連線執行緒,進而改善效能。

連線預存程序

適用於 MySQL 的 Azure 資料庫可讓您瀏覽至伺服器和 [伺服器參數] 刀鋒視窗 (或使用 Azure CLI),藉此在 Azure 入口網站中檢視和修改許多參數。 不過,有兩個需要額外權限的系統管理工作必須使用預存程序來執行。 這些包括:

  • mysql.az_kill - 相當於 KILL CONNECTION 陳述式。 採用 processlist_id 做為輸入參數。 終止連線所執行的陳述式之後即終止連線。
  • mysql.az_kill_query - 相當於 KILL QUERY 陳述式。 採用 processlist_id 做為輸入參數。 僅終止連線所執行的陳述式,而且不會終止連線。

這些預存程序需要 SUPER USER 權限。

連線效率

為了達到最佳效能,您通常應該使用 ProxySQL,或適用於 MySQL 的 Heimdall Data Proxy Proxy 解決方案。 如需連線效率的詳細資訊,請參閱連線效率