次の方法で共有


Fabric データ ウェアハウスにおけるクエリの分析情報

適用対象: Microsoft Fabric の SQL 分析エンドポイントおよびウェアハウス

Microsoft Fabric におけるクエリの分析情報機能は、SQL 分析エクスペリエンスを強化するためのスケーラブルで持続可能、かつ拡張可能なソリューションです。 過去のクエリ データ、集計された分析情報、実際のクエリ テキストへのアクセスを使用して、クエリ パフォーマンスを分析および調整できます。 クエリの分析情報 (QI) は、ユーザーのコンテキストで実行されたクエリに関する情報のみ提供され、システム クエリは考慮されません。

クエリの分析情報機能では、30 日間の履歴クエリ データと、アクションにつながる分析情報が一元的に提供されます。これは、ウェアハウスまたは SQL 分析エンドポイントのパフォーマンスを向上させるために、十分な情報に基づく意思決定を行うのに役立ちます。 SQL クエリが Microsoft Fabric で実行されると、クエリの分析情報機能で貴重な情報が提供されるその実行データを収集および統合します。 管理者、メンバー、および共同作成者ロールの完全なクエリ テキストを表示できます。

  • クエリの履歴データ: クエリの分析情報機能では、クエリの実行に関する履歴データが保存され、時間の経過に伴うパフォーマンスの変化を追跡できるようになります。 システム クエリはクエリの分析情報には保存されません。
  • 集計された分析情報: クエリの分析情報機能は、クエリ実行データを集計して、実行時間の長いクエリや最もアクティブなユーザーの特定など、アクション可能な分析情報です。 これらの集計はクエリの形状に基づいており、「類似のクエリを集計して分析情報を生成する方法」で詳しく説明されています。

開始する前に

共同作成者以上のアクセス許可を持つ Premium 容量ワークスペース内の SQL 分析エンドポイントまたはウェアハウスにアクセスできる必要があります。

クエリの分析情報はいつ必要ですか?

クエリの分析情報機能は、クエリ パフォーマンスとデータベースの最適化に関する次のような疑問や懸念事項を解決します。

クエリ パフォーマンス分析

  • クエリの履歴パフォーマンスとは何ですか?
  • 実行時間の長いクエリで注意が必要なものはありますか?
  • パフォーマンスのボトルネックとなっているクエリを特定できますか?

クエリ最適化と調整

  • 頻繁に実行され、そのパフォーマンスを改善できるのはどのクエリですか?
  • 失敗したクエリや取り消されたクエリを特定できますか?
  • クエリ パフォーマンスの経時的な変化を追跡できますか?
  • 常にパフォーマンスの悪いクエリはありますか?

ユーザー アクティビティの監視

  • 特定のクエリを送信したのは誰ですか?
  • 最もアクティブなユーザー、あるいは最も長い時間クエリを実行しているユーザーは誰ですか?

これらの質問に対する回答を提供するために、次の 3 つのシステム ビューがあります。

クエリの分析情報はどこで確認できますか?

自動生成されたビューは、SQL 分析エンドポイントウェアハウスqueryinsights スキーマの下にあります。 たとえば、Warehouse の Fabric Explorer の [スキーマ][クエリの分析情報][ビュー] の下にクエリの分析情報ビューがあります。

[スキーマ]、[queryinsights]、[ビュー] でクエリ分析情報ビューを検索する場所を示す Fabric エクスプローラーのスクリーンショット。

クエリの実行が完了すると、接続先のウェアハウスまたは SQL 分析エンドポイントの queryinsights ビューにその実行データが表示されます。 WH_2 のコンテキストでデータベース間クエリを実行すると、そのクエリは WH_2 のクエリの分析情報に表示されます。 完了したクエリがクエリの分析情報に表示されるまでには、同時に実行されるワークロードに応じて最大 15 分かかることがあります。 クエリがクエリの分析情報に表示されるまでの時間は、同時に実行されるクエリが増えるほど長くなります。

分析情報を生成するために、類似したクエリはどのように集計されますか?

述語の値以外で、2 つのクエリがクエリ テキストで完全に一致する場合、クエリの分析情報機能によってクエリは同じとみなされます。 空白や改行文字は、異なるクエリとみなされます。

ビューの query hash 列を使用して、同様のクエリを分析し、各実行にドリルダウンできます。

たとえば、次のクエリは、述語がパラメーター化された後、同じクエリとみなされます。

SELECT * FROM Orders
WHERE OrderDate BETWEEN '1996-07-01' AND '1996-07-31';

and

SELECT * FROM Orders
WHERE OrderDate BETWEEN '2000-07-01' AND '2006-07-31';

過去 30 分以内に実行されたクエリを特定する

次のクエリでは、現在のセッション ユーザー名を返す queryinsights.exec_requests_history と組み込みの USER_NAME() 関数を使用します。

SELECT * FROM queryinsights.exec_requests_history 
WHERE start_time >= DATEADD(MINUTE, -30, GETUTCDATE())
AND login_name = USER_NAME();

クエリ テキストの部分文字列を使用して、最も頻繁に実行されるクエリを特定する

次のクエリは、特定の文字列に一致する直近のクエリを成功した実行回数の多い順に返します。

SELECT * FROM queryinsights.frequently_run_queries
WHERE last_run_command LIKE '%<some_label>%'
ORDER BY number_of_successful_runs DESC;

クエリ テキストの部分文字列を使用して、最も長時間実行されるクエリを特定する

次のクエリは、特定の文字列に一致する中央値クエリ実行時間の長い順に返します。

SELECT * FROM queryinsights.long_running_queries
WHERE last_run_command LIKE '%<some_label>%'
ORDER BY median_total_elapsed_time_ms DESC;