Azure SQL Database の Query Performance InsightQuery Performance Insight for Azure SQL Database

適用対象: はいAzure SQL Database APPLIES TO: yesAzure SQL Database

Query Performance Insight は、単一およびプールされたデータベースに対するインテリジェントなクエリ分析を提供します。Query Performance Insight provides intelligent query analysis for single and pooled databases. これは、ワークロードで最もリソースを消費し、長時間実行されるクエリを特定するのに役立ちます。It helps identify the top resource consuming and long-running queries in your workload. これにより、ワークロードの全体的なパフォーマンスを向上させるため、およびコストをかけているリソースを効率的に使用するために、最適化するクエリを見つけることができます。This helps you find the queries to optimize to improve overall workload performance and efficiently use the resource that you are paying for. Query Performance Insight を使用すると、以下が提供され、データベースのパフォーマンスのトラブルシューティングに費やす時間を短縮できます。Query Performance Insight helps you spend less time troubleshooting database performance by providing:

  • データベース リソース (DTU) の消費量の詳細な情報Deeper insight into your databases resource (DTU) consumption
  • CPU、期間、および実行回数別の上位データベース クエリの詳細 (パフォーマンス向上のためのチューニングの対象となる可能性があります)Details on top database queries by CPU, duration, and execution count (potential tuning candidates for performance improvements)
  • クエリの詳細にドリルダウンして、クエリ テキストやリソース使用率の履歴を表示する機能The ability to drill down into details of a query, to view the query text and history of resource utilization
  • データベース アドバイザーからのパフォーマンスに関する推奨事項を示す注釈Annotations that show performance recommendations from database advisors

Query Performance Insight


Query Performance Insight では、 クエリ ストア がデータベース上で実行されている必要があります。Query Performance Insight requires that Query Store is active on your database. 既定では、Azure SQL Database のすべてのデータベースに対して自動的に有効になります。It's automatically enabled for all databases in Azure SQL Database by default. クエリ ストアが実行されていない場合、Azure portal で有効にするように求められます。If Query Store is not running, the Azure portal will prompt you to enable it.


ポータルで "クエリ ストアはこのデータベースで適切に構成されていません" というメッセージが表示された場合は、クエリ ストア構成の最適化に関する記述を参照してください。If the "Query Store is not properly configured on this database" message appears in the portal, see Optimizing the Query Store configuration.


Query Performance Insight を使用するには、次のロール ベースのアクセス制御権限が必要です。You need the following role-based access control permissions to use Query Performance Insight:

  • 上位のリソース消費量クエリとグラフを表示するには、閲覧者所有者共同作成者SQL DB 共同作業者、または SQL Server 共同作業者の権限が必要です。Reader, Owner, Contributor, SQL DB Contributor, or SQL Server Contributor permissions are required to view the top resource-consuming queries and charts.
  • クエリ テキストを表示するには、所有者共同作成者SQL DB 共同作業者、または SQL Server 共同作業者の権限が必要です。Owner, Contributor, SQL DB Contributor, or SQL Server Contributor permissions are required to view query text.

Query Performance Insight の使用Use Query Performance Insight

Query Performance Insight は簡単に使用できます。Query Performance Insight is easy to use:

  1. Azure portal を開き、調査するデータベースを見つけます。Open the Azure portal and find a database that you want to examine.

  2. 左側のメニューから、 [インテリジェント パフォーマンス] > [Query Performance Insight] の順に開きます。From the left-side menu, open Intelligent Performance > Query Performance Insight.

    メニューの [Query Performance Insight]

  3. 最初のタブで、リソース消費量が上位のクエリの一覧を確認します。On the first tab, review the list of top resource-consuming queries.

  4. 個別のクエリを選択して詳細を表示します。Select an individual query to view its details.

  5. [インテリジェント パフォーマンス] > [パフォーマンスの推奨事項] の順に開き、パフォーマンスの推奨事項が利用可能かどうかを確認します。Open Intelligent Performance > Performance recommendations and check if any performance recommendations are available. 組み込みのパフォーマンスの推奨事項について詳しくは、Azure SQL Database Advisor に関するページを参照してください。For more information on built-in performance recommendations, see Azure SQL Database Advisor.

  6. スライダーまたはズーム アイコンを使用して、監視間隔を変更します。Use sliders or zoom icons to change the observed interval.

    パフォーマンス ダッシュボード


Query Performance Insight で情報を表示する Azure SQL Database の場合、クエリ ストアで数時間分のデータをキャプチャする必要があります。For Azure SQL Database to render the information in Query Performance Insight, Query Store needs to capture a couple hours of data. 一定の期間に、データベースでアクティビティが発生していない場合、またはクエリ ストアがアクティブではなかった場合、Query Performance Insight でその時間の範囲が表示されたときにグラフは空になります。If the database has no activity or if Query Store was not active during a certain period, the charts will be empty when Query Performance Insight displays that time range. クエリ ストアが実行されていない場合はいつでも有効にできます。You can enable Query Store at any time if it's not running. 詳細については、「クエリ ストアを使用するときの推奨事項」を参照してください。For more information, see Best practices with Query Store.

データベースのパフォーマンスに関する推奨事項を確認する場合は、Query Performance Insight のナビゲーション ブレードの [推奨事項] を選択します。For database performance recommendations, select Recommendations on the Query Performance Insight navigation blade.

[推奨事項] タブ

上位の CPU 消費量クエリを確認するReview top CPU-consuming queries

既定では、Query Performance Insight を最初に開いたときに、上位 5 つの CPU 消費量クエリが表示されます。By default, Query Performance Insight shows the top five CPU-consuming queries when you first open it.

  1. グラフに表示する個別のクエリを選別するには、チェック ボックスをオンまたはオフにします。Select or clear individual queries to include or exclude them from the chart by using check boxes.

    上の折れ線は、データベース全体の DTU の割合を示しています。The top line shows overall DTU percentage for the database. 棒グラフは、選択された期間に選択されたクエリで消費された CPU の割合を示しています。The bars show CPU percentage that the selected queries consumed during the selected interval. たとえば、 [過去 1 週間] が選択されている場合、各棒は 1 日を表します。For example, if Past week is selected, each bar represents a single day.



    折れ線で示されている DTU は、1 時間の最大消費値に集計されます。The DTU line shown is aggregated to a maximum consumption value in one-hour periods. これは、クエリ実行の統計情報でのみ大まかに比較するためです。It's meant for a high-level comparison only with query execution statistics. DTU 使用率が実行されたクエリに比べて高すぎるように見える場合がありますが、そうでない可能性もあります。In some cases, DTU utilization might seem too high compared to executed queries, but this might not be the case.

    たとえば、わずか数分でクエリでの DTU の消費量が上限に達して 100% になった場合、Query Performance Insight の DTU の折れ線は、まる 1 時間の消費率を 100% (最大集計値の結果) として示しています。For example, if a query maxed out DTU to 100% for a few minutes only, the DTU line in Query Performance Insight will show the entire hour of consumption as 100% (the consequence of the maximum aggregated value).

    より細かく比較する場合 (最大で 1 分間) は、次のようにして、カスタム DTU 使用率のグラフを作成することを検討してください。For a finer comparison (up to one minute), consider creating a custom DTU utilization chart:

    1. Azure portal で、 [Azure SQL Database] > [監視] の順に選択します。In the Azure portal, select Azure SQL Database > Monitoring.
    2. [メトリック] を選びます。Select Metrics.
    3. [+ グラフの追加] を選択します。Select +Add chart.
    4. グラフの DTU の割合を選択します。Select the DTU percentage on the chart.
    5. さらに、左上のメニューで [過去 24 時間] を選択し、それを 1 分に変更します。In addition, select Last 24 hours on the upper-left menu and change it to one minute.

    より詳細なカスタム DTU グラフを使用して、クエリ実行グラフと比較します。Use the custom DTU chart with a finer level of details to compare with the query execution chart.

    下部のグリッドには、次の表示可能なクエリの集計情報が示されます。The bottom grid shows aggregated information for the visible queries:

    • クエリ ID。データベースでのクエリの一意識別子です。Query ID, which is a unique identifier for the query in the database.
    • 監視可能な期間のクエリあたりの CPU 使用率。集計関数に依存します。CPU per query during an observable interval, which depends on the aggregation function.
    • 1 つのクエリの実行時間。これも集計関数に依存します。Duration per query, which also depends on the aggregation function.
    • 特定のクエリの実行回数の合計。Total number of executions for a specific query.
  2. データが古くなった場合は、 [更新] ボタンを選択します。If your data becomes stale, select the Refresh button.

  3. 監視間隔を変更して消費量の急増を調べるには、スライダーとズーム ボタンを使用します。Use sliders and zoom buttons to change the observation interval and investigate consumption spikes:

    間隔を変更するためのスライダーとズーム ボタン

  4. 必要に応じて、 [カスタム] タブを選択し、以下を表示するようにビューをカスタマイズすることができます。Optionally, you can select the Custom tab to customize the view for:

    • メトリック (CPU、実行時間、実行回数)。Metric (CPU, duration, execution count).
    • 時間間隔 (過去 24 時間、過去 1 週間、過去 1 か月)。Time interval (last 24 hours, past week, or past month).
    • クエリの数Number of queries.
    • 集計関数Aggregation function.

    [カスタム] タブ

  5. [進む >] ボタンを選択して、カスタマイズされたビューを表示します。Select the Go > button to see the customized view.


    Query Performance Insight は、選択内容に応じて、上位の 5 個から 20 個の消費量クエリを表示するように制限されています。Query Performance Insight is limited to displaying the top 5-20 consuming queries, depending on your selection. データベースでは表示される上位のクエリ以外にもさらに多くのクエリを実行できます。これらのクエリはグラフには含まれません。Your database can run many more queries beyond the top ones shown, and these queries will not be included on the chart.

    表示される上位のクエリ以外にも、多くの小さなクエリが頻繁に実行され、DTU の大部分が使用されるようなデータベース ワークロードが存在する可能性があります。There might exist a database workload type in which lots of smaller queries, beyond the top ones shown, run frequently and use the majority of DTU. これらのクエリはパフォーマンス グラフに表示されません。These queries don't appear on the performance chart.

    たとえば、あるクエリでしばらくの間、かなりの量の DTU が消費された可能性があるとします。しかし、監視期間におけるその総消費量は、他の上位の消費量クエリよりも少なくなっています。For example, a query might have consumed a substantial amount of DTU for a while, although its total consumption in the observed period is less than the other top-consuming queries. このような場合、このクエリのリソース使用率はグラフには表示されません。In such a case, resource utilization of this query would not appear on the chart.

    Query Performance Insight の制限を超える上位のクエリ実行について確認する必要がある場合は、高度なデータベース パフォーマンスの監視とトラブルシューティングのための Azure SQL Analytics の使用を検討してください。If you need to understand top query executions beyond the limitations of Query Performance Insight, consider using Azure SQL Analytics for advanced database performance monitoring and troubleshooting.

個々のクエリの詳細を表示するView individual query details

クエリの詳細を表示するには:To view query details:

  1. 上位クエリのリストでクエリを選択します。Select any query in the list of top queries.


    詳細なビューが開きます。A detailed view opens. CPU 消費量、期間、および実行回数が時系列で示されます。It shows the CPU consumption, duration, and execution count over time.

  2. グラフの機能を選択して詳細を確認します。Select the chart features for details.

    • 一番上のグラフの折れ線は、データベース全体の DTU の割合を示しています。The top chart shows a line with the overall database DTU percentage. 棒グラフは、選択されたクエリで消費された CPU の割合を示しています。The bars are the CPU percentage that the selected query consumed.
    • 2 つ目のグラフは、選択されたクエリの総実行時間を示しています。The second chart shows the total duration of the selected query.
    • 一番下のグラフは、選択されたクエリによる総実行回数を示しています。The bottom chart shows the total number of executions by the selected query.


  3. 必要に応じて、スライダーやズーム ボタンを使用するか、 [設定] を選択してクエリ データの表示方法をカスタマイズするか、別の時間範囲を選びます。Optionally, use sliders, use zoom buttons, or select Settings to customize how query data is displayed, or to pick a different time range.


    Query Performance Insight ではどの DDL クエリもキャプチャされません。Query Performance Insight does not capture any DDL queries. 場合によっては、アドホック クエリがすべてキャプチャされない可能性があります。In some cases, it might not capture all ad hoc queries.

実行時間あたりの上位クエリを確認するReview top queries per duration

Query Performance Insight の 2 つのメトリック (実行時間と実行回数) は、潜在的なボトルネックの特定に役立つ場合があります。Two metrics in Query Performance Insight can help you find potential bottlenecks: duration and execution count.

実行時間の長いクエリは、長期にわたるリソースのロック、他のユーザーのブロック、スケーラビリティの制限を引き起こす最大の原因と考えられます。Long-running queries have the greatest potential for locking resources longer, blocking other users, and limiting scalability. これらは、最適化に最も適した要素でもあります。They're also the best candidates for optimization.

実行時間の長いクエリを特定するには、次のようにします。To identify long-running queries:

  1. Query Performance Insight で、選択されたデータベースの [カスタム] タブを開きます。Open the Custom tab in Query Performance Insight for the selected database.

  2. メトリックを [実行時間] に変更します。Change the metrics to duration.

  3. クエリの数と監視間隔を選択します。Select the number of queries and the observation interval.

  4. 集計関数を選択します。Select the aggregation function:

    • Sum では、監視間隔全体のすべてのクエリ実行時間を合計します。Sum adds up all query execution time for the whole observation interval.
    • Max では、監視間隔全体で実行時間が最長のクエリを検索します。Max finds queries in which execution time was maximum for the whole observation interval.
    • Avg では、全クエリ実行の平均実行時間を算出し、これらの平均値の上位のクエリを表示します。Avg finds the average execution time of all query executions and shows you the top ones for these averages.


  5. [進む >] ボタンを選択して、カスタマイズされたビューを表示します。Select the Go > button to see the customized view.


    クエリ ビューを調整しても、DTU の折れ線は更新されません。Adjusting the query view does not update the DTU line. DTU の折れ線は常に、その間隔での最大消費値を示します。The DTU line always shows the maximum consumption value for the interval.

    データベースの DTU 消費量をより詳しく確認する場合 (最大で 1 分間) は、次のように Azure portal でカスタム グラフを作成することを検討してください。To understand database DTU consumption with more detail (up to one minute), consider creating a custom chart in the Azure portal:

    1. [Azure SQL Database] > [監視] の順に選択します。Select Azure SQL Database > Monitoring.
    2. [メトリック] を選びます。Select Metrics.
    3. [+ グラフの追加] を選択します。Select +Add chart.
    4. グラフの DTU の割合を選択します。Select the DTU percentage on the chart.
    5. さらに、左上のメニューで [過去 24 時間] を選択し、それを 1 分に変更します。In addition, select Last 24 hours on the upper-left menu and change it to one minute.

    カスタム DTU グラフを使用して、クエリのパフォーマンス グラフと比較することをお勧めします。We recommend that you use the custom DTU chart to compare with the query performance chart.

実行回数あたりの上位クエリを確認するReview top queries per execution count

実行回数が多くてもデータベース自体には影響しない場合や、リソース使用率が低い場合でも、データベースを使用するユーザー アプリケーションの処理速度は低下する可能性があります。A user application that uses the database might get slow, even though a high number of executions might not be affecting the database itself and resources usage is low.

場合によっては、実行回数が多いと、ネットワークのラウンド トリップが増えることがあります。In some cases, a high execution count can lead to more network round trips. ラウンド トリップはパフォーマンスに影響します。Round trips affect performance. これは、ネットワーク待ち時間やダウンストリーム サーバーの待ち時間の影響を受けます。They're subject to network latency and to downstream server latency.

たとえば、多くのデータ ドリブン Web サイトでは、ユーザー要求ごとに高い頻度でデータベースにアクセスします。For example, many data-driven websites heavily access the database for every user request. 接続プールは役立ちますが、ネットワーク トラフィックやサーバーの処理負荷の増加により、パフォーマンスが低下する可能性があります。Although connection pooling helps, the increased network traffic and processing load on the server can slow performance. 一般的には、ラウンド トリップを最小限に抑えます。In general, keep round trips to a minimum.

頻繁に実行される ("頻度の高い") クエリを特定するには、次のようにします。To identify frequently executed ("chatty") queries:

  1. Query Performance Insight で、選択されたデータベースの [カスタム] タブを開きます。Open the Custom tab in Query Performance Insight for the selected database.

  2. メトリックを [実行回数] に変更します。Change the metrics to execution count.

  3. クエリの数と監視間隔を選択します。Select the number of queries and the observation interval.

  4. [進む >] ボタンを選択して、カスタマイズされたビューを表示します。Select the Go > button to see the customized view.


パフォーマンス チューニングの注釈を理解するUnderstand performance tuning annotations

Query Performance Insight でワークロードを調べる際に、垂直線付きのアイコンがグラフ上部に表示されることがあります。While exploring your workload in Query Performance Insight, you might notice icons with a vertical line on top of the chart.

これらのアイコンは注釈です。These icons are annotations. Azure SQL Database Advisor からのパフォーマンスに関する推奨事項が示されます。They show performance recommendations from Azure SQL Database Advisor. 注釈にカーソルを置くことで、パフォーマンスの推奨事項に関する概要を表示することができます。By hovering over an annotation, you can get summarized information on performance recommendations.


詳細を確認したり、アドバイザーの推奨事項を適用したりする場合は、アイコンを選択し、推奨されるアクションの詳細を開きます。If you want to understand more or apply the advisor's recommendation, select the icon to open details of the recommended action. これがアクティブな推奨事項の場合は、ポータルからすぐに適用できます。If this is an active recommendation, you can apply it right away from the portal.


ズーム レベルによっては、互いに近接する注釈が 1 つに折りたたまれている場合があります。In some cases, due to the zoom level, it's possible that annotations close to each other are collapsed into a single annotation. Query Performance Insight では、これがグループ注釈アイコンとして表されます。Query Performance Insight represents this as a group annotation icon. グループ注釈アイコンを選択すると、注釈を一覧表示する新しいブレードが開きます。Selecting the group annotation icon opens a new blade that lists the annotations.

相互に関連するクエリやパフォーマンス チューニング アクションは、ワークロードの理解を深めるのに役立つ場合があります。Correlating queries and performance-tuning actions might help you to better understand your workload.

クエリ ストアの構成の最適化Optimize the Query Store configuration

Query Performance Insight を使用しているときに、次のようなクエリ ストアのエラー メッセージが表示される場合があります。While using Query Performance Insight, you might see the following Query Store error messages:

  • 「クエリ ストアはこのデータベースで適切に構成されていません。"Query Store is not properly configured on this database. 詳細を確認するには、ここをクリックしてください。」Click here to learn more."
  • 「クエリ ストアはこのデータベースで適切に構成されていません。"Query Store is not properly configured on this database. 設定を変更するには、ここをクリックしてください。」Click here to change settings."

これらのメッセージは、通常、クエリ ストアで新しいデータを収集できないときに表示されます。These messages usually appear when Query Store can't collect new data.

1 つ目は、クエリ ストアが読み取り専用状態にあり、パラメーターが最適に設定されている場合に発生します。The first case happens when Query Store is in the read-only state and parameters are set optimally. これは、データ ストアのサイズを増やすか、クエリ ストアを消去することで修正できますYou can fix this by increasing the size of the data store, or by clearing Query Store. (クエリ ストアを消去すると、以前に収集されたテレメトリがすべて失われます)。(If you clear Query Store, all previously collected telemetry will be lost.)

クエリ ストアの詳細

2 つ目は、クエリ ストアが有効になっていないか、パラメーターが最適に設定されていない場合に発生します。The second case happens when Query Store is not enabled, or parameters are not set optimally. 保持およびキャプチャ ポリシーを変更できます。また、クエリ ストアを有効にすることもできます。その場合は、SQL Server Management Studio (SSMS) または Azure portal から提供される以下のコマンドを実行します。You can change the retention and capture policy, and also enable Query Store, by running the following commands provided from SQL Server Management Studio (SSMS) or the Azure portal.

保持ポリシーには 2 つの種類があります。There are two types of retention policies:

  • サイズ ベース:このポリシーが AUTO に設定されている場合、最大サイズに近づくとデータが自動的にクリーンアップされます。Size based: If this policy is set to AUTO, it will clean data automatically when near maximum size is reached.
  • 時間ベース:既定では、このポリシーは 30 日に設定されます。Time based: By default, this policy is set to 30 days. クエリ ストアの領域が不足すると、30 日を経過したクエリ情報が削除されます。If Query Store runs out of space, it will delete query information older than 30 days.

キャプチャ ポリシーは、次のように設定できます。You can set the capture policy to:

  • [すべて] : クエリ ストアですべてのクエリがキャプチャされます。All: Query Store captures all queries.
  • Auto:クエリ ストアでは、低頻度のクエリおよびコンパイル期間と実行期間が重要ではないクエリは無視されます。Auto: Query Store ignores infrequent queries and queries with insignificant compile and execution duration. 実行回数、コンパイル期間、実行期間のしきい値は内部的に決定されます。Thresholds for execution count, compile duration, and runtime duration are internally determined. 既定のオプションです。This is the default option.
  • None:クエリ ストアでは新しいクエリのキャプチャが停止されます。しかし、既にキャプチャされているクエリの実行時統計は引き続き収集されます。None: Query Store stops capturing new queries, but runtime statistics for already captured queries are still collected.

SSMS または Azure portal から以下のコマンドを実行して、すべてのポリシーを AUTO に設定し、クリーンアップ ポリシーを 30 日に設定することをお勧めしますWe recommend setting all policies to AUTO and the cleaning policy to 30 days by executing the following commands from SSMS or the Azure portal. (YourDB はデータベース名に置き換えてください)。(Replace YourDB with the database name.)




SSMS または Azure portal 経由でデータベースに接続し、以下のクエリを実行して、クエリ ストアのサイズを増やしますIncrease the size of Query Store by connecting to a database through SSMS or the Azure portal and running the following query. (YourDB はデータベース名に置き換えてください)。(Replace YourDB with the database name.)


これらの設定を適用すると、最終的にクエリ ストアで新しいクエリのテレメトリが収集されるようになります。Applying these settings will eventually make Query Store collect telemetry for new queries. クエリ ストアをすぐに動作させる必要がある場合は、SSMS または Azure portal 経由で次のクエリを実行し、クエリ ストアを消去するように選択することもできます。If you need Query Store to be operational right away, you can optionally choose to clear Query Store by running the following query through SSMS or the Azure portal. (YourDB はデータベース名に置き換えてください)。(Replace YourDB with the database name.)


次のクエリを実行すると、クエリ ストア内の、以前に収集された監視対象テレメトリがすべて削除されます。Running the following query will delete all previously collected monitored telemetry in Query Store.


次のステップNext steps

多数の単一およびプールされたデータベース、エラスティック プール、マネージド インスタンス、およびインスタンス データベースについて高度なパフォーマンス監視を行う場合は、Azure SQL Analytics の使用を検討してください。Consider using Azure SQL Analytics for advanced performance monitoring of a large fleet of single and pooled databases, elastic pools, managed instances and instance databases.