チュートリアル: Azure Database for MySQL - フレキシブル サーバー向けの Query Performance Insight

適用対象: Azure Database for MySQL - フレキシブル サーバー

Query Performance Insight は、データベースに対してインテリジェントなクエリ分析を提供することを提案します。 最も優先度の高い分析情報は、ワークロードのパターンと実行時間の長いクエリです。 これらの分析情報を理解すると、どのクエリを最適化すれば、全体的なパフォーマンスを向上させ、使用可能なリソースを効率的に使用できるかを見つけるのに役立ちます。

Query Performance Insight は、次のような情報を提供することで、データベースのパフォーマンスのトラブルシューティングに費やす時間を短縮できるように設計されています。

  • 実行時間の長いクエリの上位 N 個とその傾向。
  • クエリの詳細: クエリ時間の最小、最大、平均、および標準偏差を含む実行履歴の表示。
  • リソース使用率 (CPU、メモリ、ストレージ)。

この記事では、Azure Database for MySQL フレキシブル サーバーの低速クエリ ログ、Log Analytics ツール、ブック テンプレートを使用して、Azure Database for MySQL フレキシブル サーバーの Query Performance Insight を視覚化する方法について説明します。

このチュートリアルで学習する内容は次のとおりです。

  • Azure portal または Azure CLI を使用して低速クエリ ログを構成する
  • 診断を設定する
  • Log Analytics を使用して低速クエリ ログを表示する
  • ブックを使用して低速クエリ ログを表示する

前提条件

Azure portal を使用して低速クエリ ログを構成する

  1. Azure portal にサインインします。

  2. Azure Database for MySQL フレキシブル サーバー インスタンスを選択します。

  3. 左側のペインの [設定] の下で [サーバー パラメーター] を選択します。

    Screenshot showing the 'Server parameters' list.

  4. slow_query_log パラメーターで [ON](オン) を選択します。

    Screenshot showing the 'slow_query_log' parameter switched to 'ON'.

  5. Long_query_timelog_slow_admin_statements などの他のパラメーターについては、低速クエリ ログのドキュメントを参照してください。

    Screenshot showing updated values for the remaining slow query log-related parameters.

  6. [保存] を選択します。

    Screenshot of the 'Save' button for saving changes in the parameter values.

[サーバー パラメーター] ページを閉じると、ログの一覧に戻ることができます。

Azure CLI を使用して低速クエリ ログを構成する

または、次のコマンドを実行して、Azure CLI から Azure Database for MySQL フレキシブル サーバー インスタンスの低速クエリ ログを有効にして構成することもできます。

重要

Azure Database for MySQL フレキシブル サーバー インスタンスのパフォーマンスが大きな影響を受けないように、監査目的で必要なイベントの種類とユーザーのみをログに記録することをお勧めします。

  • 低速クエリ ログを有効にします。
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 Monitor 診断設定と統合されているため、次の 3 つのデータ シンクにログをパイプすることができます。

  • Log Analytics ワークスペース
  • イベント ハブ
  • ストレージ アカウント

Note

診断設定を構成する前に、データ シンクを作成する必要があります。 構成したデータ シンクで低速クエリ ログにアクセスできます。 ログが表示されるまでに最大で 10 分かかる可能性があります。

  1. 左側のウィンドウの [モニター] の下で、 [診断設定] を選択します。

  2. [診断設定] ウィンドウで、 [診断設定を追加する] を選択します。

    Screenshot of the 'Add diagnostic setting' link on the 'Diagnostic settings' pane.

  3. [名前] ボックスに、診断設定の名前を入力します。

  4. 低速クエリ ログの送信先 (Log Analytics ワークスペース、イベント ハブ、またはストレージ アカウント) を指定するために、対応するチェックボックスをオンにします。

    注意

    このチュートリアルでは、低速クエリ ログを Log Analytics ワークスペースに送信します。

  5. [ログ] の [ログの種類] で、 [MySqlSlowLogs] のチェックボックスをオンにします。

    Screenshot of the 'Diagnostics settings' pane for selecting configuration options.

  6. 低速クエリ ログをパイプするようにデータ シンクを設定した後、 [保存] を選択します。

    Screenshot of Diagnostic settings configuration options, with Save highlighted.

Log Analytics を使用してクエリ分析情報を表示する

  1. Log Analytics の左側のペインの [監視] から [ログ] を選択します。

  2. 開いている [クエリ] ウィンドウを閉じます。

    Screenshot of the Log Analytics 'Queries' pane.

  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. [時間の範囲] を選択し、クエリを実行します。 結果は次の画像に示すとおりです。

    Screenshot of a slow query log.

ブックを使用してクエリ分析情報を表示する

  1. Azure portal の左側のウィンドウの [ Azure Database for MySQL フレキシブル サーバー インスタンスの監視 ] で、[ブック] を選択 します

  2. [Query Performance Insight] テンプレートを選択します。

    Screenshot showing all workbooks in the workbook gallery.

ブックでは、次の視覚化を表示できます。

  • クエリの読み込み
  • アクティブな接続の合計
  • 低速クエリの傾向 (クエリ時間が 10 秒を超えるもの)
  • 低速クエリの詳細
  • 長さが上位 5 件のクエリを一覧表示する
  • 低速クエリの最小、最大、平均、および標準偏差のクエリ時間を集計する

Screenshot showing two long queries.

Note

  • リソース使用率を表示するには、概要テンプレートを使用できます。
  • これらのテンプレートを編集し、要件に従ってカスタマイズすることもできます。 詳細については、「Azure Workbooks」を参照してください。
  • 素早く表示するために、ブックまたは Log Analytics クエリをダッシュボードにピン留めすることもできます。 詳細については、「Azure portal でダッシュボードを作成する」を参照してください。

Query Performance Insight で、潜在的なボトルネックの特定に役立てることが可能な 2 つのメトリックは、"実行時間" と "実行回数" です。 実行時間の長いクエリは、長期にわたるリソースのロック、他のユーザーのブロック、スケーラビリティの制限を引き起こす最大の原因と考えられます。

場合によっては、実行回数が多いと、ネットワークのラウンド トリップが増えることがあります。 ラウンド トリップはパフォーマンスに影響します。 これは、ネットワーク待ち時間やダウンストリーム サーバーの待ち時間の影響を受けます。 実行回数は、頻繁に実行される ("おしゃべりな") クエリを見つけるのに役立ちます。 こうしたクエリは、最適化に最も適した要素です。

次の手順