共用方式為


教學課程:「適用於 MySQL 的 Azure 資料庫 - 彈性伺服器」中的查詢效能深入解析

查詢效能深入解析可提供資料庫的智慧查詢分析。 最受青睞的深入解析是工作負載模式和執行時間較長的查詢。 了解這些深入解析可協助您找出哪些查詢可最佳化以改善整體效能,並有效率地使用可用的資源。

查詢效能深入解析提供下列資訊,專門協助您縮短為資料庫效能進行疑難排解的時間:

  • N 個長時間執行的查詢及其趨勢。
  • 查詢詳細資料:檢視執行歷程記錄 (含查詢時間最小值、最大值、平均值和標準差)。
  • 資源使用率 (CPU、記憶體和儲存體)。

本文討論如何使用 適用於 MySQL 的 Azure 資料庫 彈性伺服器慢速查詢記錄、Log Analytics 工具和活頁簿範本,以可視化 適用於 MySQL 的 Azure 資料庫 彈性伺服器的查詢效能深入解析。

在本教學課程中,您將了解如何:

  • 使用 Azure 入口網站或 Azure CLI 設定慢速查詢記錄
  • 設定診斷
  • 使用 Log Analytics 檢視慢速查詢記錄
  • 使用活頁簿檢視慢速查詢記錄

必要條件

使用 Azure 入口網站設定慢速查詢記錄

  1. 登入 Azure 入口網站

  2. 選取您的 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例。

  3. 在左側窗格的 [設定] 下方,選取 [伺服器參數]

    顯示 [伺服器參數] 列表的螢幕快照。

  4. 針對 slow_query_log 參數,選取 ON

    顯示已切換至 『ON』 之 『slow_query_log』 參數的螢幕快照。

  5. 如需其他參數的資訊,例如 long_query_timelog_slow_admin_statements,請參閱慢速查詢記錄文件。

    顯示其餘慢速查詢記錄相關參數更新值的螢幕快照。

  6. 選取儲存

    [儲存] 按鈕的螢幕快照,用於儲存參數值中的變更。

關閉 [伺服器參數] 頁面,以返回記錄清單。

使用 Azure CLI 設定慢速查詢記錄

或者,您可以執行下列命令,從 Azure CLI 啟用和設定 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例的慢速查詢記錄:

重要

為了確保您的 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例的效能不會受到嚴重影響,建議您只記錄稽核目的所需的事件類型和使用者。

  • 啟用慢速查詢記錄。
az mysql flexible-server parameter set \
--name slow_query_log \
--resource-group myresourcegroup \
--server-name mydemoserver \
--value ON
  • 將 long_query_time 時間設定為 10 秒。 此設定會記錄執行超過 10 秒的所有查詢。 根據您對慢速查詢的定義調整此閾值。
az mysql server configuration set \
--name long_query_time \
--resource-group myresourcegroup \
--server mydemoserver \
--value 10

設定診斷

慢速查詢記錄會與 Azure 監視器診斷設定整合,可讓您將記錄管線傳送至三個資料接收器的任一個:

  • Log Analytics 工作區
  • 事件中樞
  • 儲存體帳戶

注意

您應該先建立資料接收器,然後再設定診斷設定。 您可以在已設定的資料接收器中存取慢速查詢記錄。 最多可能需要 10 分鐘,記錄才會顯示。

  1. 在左側窗格的 [監視] 下方,選取 [診斷設定]

  2. 在 [診斷設定] 窗格上,選取 [新增診斷設定]

    [診斷設定] 窗格上 [新增診斷設定] 鏈接的螢幕快照。

  3. 在 [名稱] 方塊中,輸入診斷設定的名稱。

  4. 透過選取目的地對應的核取方塊,來指定要將慢速查詢記錄傳送到哪些目的地 (Log Analytics 工作區、事件中樞或儲存體帳戶)。

    注意

    在此教學課程中,您會將慢速查詢記錄傳送至 Log Analytics 工作區。

  5. 在 [記錄] 下方,針對記錄類型,選取 [MySqlSlowLogs] 核取方塊。

    用於選取組態選項的 [診斷設定] 窗格螢幕快照。

  6. 設定要將慢速查詢記錄輸送至資料接收器後,請選取 [儲存]

    [診斷設定] 組態選項的螢幕快照,其中已醒目提示 [儲存]。

使用 Log Analytics 檢視查詢深入解析

  1. 在 Log Analytics 左側窗格的 [監視] 下方,選取 [記錄]

  2. 關閉開啟的 [查詢] 視窗。

    Log Analytics [查詢] 窗格的螢幕快照。

  3. 在查詢視窗中,您可以撰寫要執行的查詢。 為了在特定伺服器上尋找執行時間超過 10 秒的查詢,我們使用了下列程式碼:

    AzureDiagnostics
       | where Category == 'MySqlSlowLogs'
       | project TimeGenerated, LogicalServerName_s, event_class_s, start_time_t , query_time_d, sql_text_s
       | where query_time_d > 10
    
  4. 選取 [時間範圍],然後執行查詢。 結果顯示在下圖中:

    慢速查詢記錄的螢幕快照。

使用活頁簿檢視查詢深入解析

  1. 在 Azure 入口網站 的左窗格中,於 [適用於 MySQL 的 Azure 資料庫 彈性伺服器實例的 [監視] 底下,選取 [活頁簿]。

  2. 選取 [查詢效能深入解析] 範本。

    顯示活頁簿資源庫中所有活頁簿的螢幕快照。

在活頁簿中,您可以檢視下列視覺效果:

  • 查詢載入
  • 作用中的連接總數
  • 慢速查詢趨勢 (>10 秒查詢時間)
  • 慢速查詢詳細資料
  • 列出最長的 5 個査詢
  • 依最小值、最大值、平均和標準差查詢時間來彙總慢速查詢

顯示兩個長查詢的螢幕快照。

注意

  • 若要檢視資源使用率,您可以使用「概觀」範本。
  • 您也可以編輯這些範本,並根據自己的需求進行自訂。 如需詳細資訊,請參閱 Azure 活頁簿
  • 如需快速檢視,您也可以將活頁簿或 Log Analytics 查詢釘選到儀表板。 如需詳細資訊,請參閱在 Azure 入口網站中建立儀表板

在查詢效能深入解析中,有兩項計量可協助您找出潛在的瓶頸︰持續時間執行計數。 長時間執行的查詢最有可能會鎖定資源較長的時間、封鎖其他使用者,以及限制擴充性。

在某些情況下,很高的執行計數可能會導致網路往返次數增加。 往返次數會影響效能。 其會受限於網路延遲和下游伺服器延遲。 因此,執行計數有助於找出經常執行的 (「多對話」) 查詢。 這些查詢是最適合進行最佳化的候選項目。