メインコンテンツまでスキップ

クエリのパフォーマンスに関する知識

備考

ベータ版

この機能はベータ版です。ワークスペース管理者は、 プレビュー ページからこの機能へのアクセスを制御できます。Databricksのプレビューを管理するを参照してください。

このページでは、Databricks がクエリ履歴で提供するパフォーマンスに関する知見と、それらを活用する方法について説明します。

クエリーの実行時、Databricksはパフォーマンス向上の機会を特定する知見、またはすでに適用された最適化を報告する知見を返す場合があります。

クエリーに関する知見と推奨事項を見つける

知見は、クエリ履歴クエリ プロファイルに表示されます。クエリーの詳細パネルには、タスクの合計時間に対する推定される影響に基づいて順位付けされた知見の概要が表示されます。クエリープロファイルの**パフォーマンスインサイト**タブには、各インサイトの完全な詳細が表示されます。

Genie Code で最適化

クエリに実用的な知見がある場合、 最適化 を選択してGenie Codeを開きます。クエリの変更が必要な知見については、Genie Codeがクエリを書き換え、変更内容を承認のために提示します。テーブルまたはコンピュートの変更を伴う知見については、Genie Codeが推奨されるアクションを平易な言語テキストとして要約します。

Genie Code の操作の詳細については、Genie Codeを参照してください。

クエリ最適化知見

COVERAGE_FILTER_KEYS_CLUSTERING

テーブルは、テーブルスキャン中にフィルターでは使用されない1つ以上のキーによってクラスタリングされています

推奨事項: 読み込みバイトを削減するために、クラスタリングキーにフィルターを追加してください。

COVERAGE_FILTER_KEYS_PARTITIONING

テーブルは、テーブルスキャン中にフィルターで使用されない1つ以上のキーによってパーティション化されています

推奨事項: パーティションキーにフィルターを追加し、読み込みバイトを削減することをお勧めします。

COVERAGE_PHOTON

Photonはこの操作を高速化できません。そのため、クエリは標準のランタイムエンジンを使用します。

推奨事項: Photonの制限事項を確認し、サポートされている実行パスを使用するようにクエリを調整してください。

爆発結合

結合は、読み取る行数よりもはるかに多くの行を生成します。

推奨事項: 必要な結果のサブセットを特定し、結合条件を更新するか、両方のリレーションからの入力行数を減らします。

フロー全体再計算

フローフルリコンピュートとして実行されます。

推奨事項: 読み取りバイト数を減らすには、増分サポートのクエリを書き換えてください。

冗長な集計

集計操作はクエリー結果を変更しませんでした。

推奨事項: 集計を削除するか、主キーと外部キーの制約を適用してください。

REDUNDANT_JOIN

外部結合は、外部側の行数を変更せず、結合されたテーブルの列も使用されていません。

推奨事項: 結合を削除するか、主キー制約または一意制約を適用してください。

選択結合

結合は、読み取る行よりも大幅に少ない行を生成します。

推奨: 必要な結果サブセットを特定し、入力行を削減するために結合の前にフィルタを追加します。

ワイドプロジェクション

クエリは、テーブルのすべての列を射影します

推奨: 必要な列のみをプロジェクションして、読込バイトを削減してください。

データのレイアウト知見

同時書き込み

テーブルへの並列書き込みにより、競合が発生し、自動的に解決されるか、失敗します。

推奨事項: Delta履歴を確認して、並列書き込みを特定し、競合を回避するようにスケジューリングを調整してください。

COVERAGE_STATS_DELTA

Delta データ スキッピング」の統計がテーブル スキャン ファイル フィルターに不足しているか不完全なため、クエリではファイル内フィルターが使用されます。

各フィルターの統計ステータスは、以下のいずれかになります:

  • 全体: 統計はすべてのフィルターで利用可能です。
  • 一部: フィルターのサブセットで統計が利用可能です。
  • 利用不可: 統計はいずれのフィルターでも利用できません。
  • 未使用: フィルターによってデータ型が変換されるため、統計は使用できません。

**推奨事項:** Delta 統計を収集 することで、読込バイト数を削減できます。

COVERAGE_STATS_OPTIMIZER

コストベースオプティマイザ(CBO)の統計情報が不足しているか不完全なため、クエリプランは標準のヒューリスティックを使用します。

推奨事項: オプティマイザがより良いプランを作成できるように、統計を収集 してください。

データスキュー

データはコンピューティング リソース間で不均等に分散されています。

推奨事項: データ分散を確認し、キーソルティングまたは事前集計を使用してワークロードのバランスを取ります。

MANUAL_DATA_LAYOUT

このテーブルは手動で最適化されており、自動リキッドクラスタリングの恩恵を受けられます。

推奨事項:

  • テーブルを外部からマネージドに変換することで、パフォーマンスが向上し、自動メンテナンスが可能になります。
  • 自動メンテナンス操作のために、テーブルで予測的最適化を有効にします。
  • テーブルで自動クラスタリングを有効にして、読み込みバイト数を削減してください。

コンピュートとリソースの知見

データ漏洩

データがメモリに収まらなかったため、クエリー実行中にディスクにスピルしました。

推奨事項: メモリを追加するために、ウェアハウスのサイズを拡大してください。メモリ使用量を削減するため、行数、列数、または大きい列(文字列、配列、マップ、構造体)のサイズを削減してください。

過剰な待ち時間

クエリはウェアハウスキューで待機していました。

推奨:ウェアハウスの クラスターの最大数 を増やすことで、キュー時間を短縮します。

IO_スロットリング

クラウド プロバイダーによって、クラウド ストレージのリクエストがスロットルされました。

推奨事項:クラウドプロバイダーからのストレージリクエスト上限の引き上げを管理者に依頼してください。

適用されたアクセラレーション

これらの知見は、クエリー実行中にDatabricksがすでに適用した最適化について説明しています。これらは Performance 知見 tabに Accelerated ラベル付きで表示され、操作は不要です。

自動液体クラスタリング

このクエリーは、テーブルで 自動リキッドクラスタリング を使用しているため、読み取るデータ量が少なくなっています。Databricks は、ワークロードから学習したキーに基づいて各テーブルを継続的にクラスタリングするため、スキャン時にフィルターに一致しないファイルがスキップされます。チューニングや手動パーティション分割は不要です。

HISTORY_BASED_JOIN_STRATEGY

Databricks は、類似クエリーの過去のランの測定値を使用して、このクエリーの結合を最適化しました。ワークロード履歴に基づき、クラスター全体でデータをシャッフルする代わりにブロードキャスト結合が選択されました。クエリーの変更は不要です。

SHORT_QUERY_PRIORITIZATION

クラスターが容量に達していたにもかかわらず、Databricksはこのクエリーが短時間で終了すると予測し、より重いクエリーの背後でキューに保持するのではなく、高速パスを通じて即座に実行しました。これにより、負荷がかかっている状況でも対話型ワークロードの応答性が維持されます。

その他のリソース

パフォーマンスのベストプラクティスについてより詳しく知るには、Databricks、Spark、Delta Lake のワークロードを最適化するための包括的なガイドを参照してください。