次の方法で共有


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

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. 左側のペインの [設定] の下で [サーバー パラメーター] を選択します。

    [サーバーパラメーター] の一覧を示すスクリーンショット。

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

    [ON]\(オン\) に切り替えた 'slow_query_log' パラメーターを示すスクリーンショット。

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

    残りの低速クエリ ログ関連パラメーターの更新された値を示すスクリーンショット。

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

    パラメーター値の変更を保存するための [保存] ボタンのスクリーンショット。

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

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. [診断設定] ウィンドウで、 [診断設定を追加する] を選択します。

    [診断設定] ウィンドウの [診断設定を追加する] リンクのスクリーンショット。

  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 portal の左側のペインで、Azure Database for MySQL フレキシブル サーバー インスタンスの [監視] の下にある [ブック] を選択します。

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

    ブック ギャラリー内のすべてのブックを示すスクリーンショット。

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

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

2 つの長いクエリを示すスクリーンショット。

Note

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

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

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