クエリのパフォーマンスに関する知識
ベータ版
この機能はベータ版です。ワークスペース管理者は、 プレビュー ページからこの機能へのアクセスを制御できます。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の制限事項を確認し、サポートされている実行パスを使用するようにクエリを調整してください。
爆発結合
結合は、読み取る行数よりもはるかに多くの行を生成します。
推奨事項: 必要な結果のサブセットを特定し、結合条件を更新するか、両方のリレーションからの入力行数を減らします。
フロー全体再計算
推奨事項: 読み取りバイト数を減らすには、増分サポートのクエリを書き換えてください。
冗長な集計
集計操作はクエリー結果を変更しませんでした。
推奨事項: 集計を削除するか、主キーと外部キーの制約を適用してください。
選択結合
結合は、読み取る行よりも大幅に少ない行を生成します。
推奨: 必要な結果サブセットを特定し、入力行を削減するために結合の前にフィルタを追加します。
ワイドプロジェクション
クエリは、テーブルのすべての列を射影します。
推奨: 必要な列のみをプロジェクションして、読込バイトを削減してください。
データのレイアウト知見
自動液体クラスタリング
テーブルは手動で最適化されており、自動リキッドクラスタリングの恩恵を受けられます。
推奨事項:
- テーブルを外部からマネージドに変換することで、パフォーマンスが向上し、自動メンテナンスが可能になります。
- 自動メンテナンス操作のために、テーブルで予測的最適化を有効にします。
- テーブルで自動クラスタリングを有効にして、読み込みバイト数を削減してください。
同時書き込み
テーブルへの並列書き込みにより、競合が発生し、自動的に解決されるか、失敗します。
推奨事項: Delta履歴を確認して、並列書き込みを特定し、競合を回避するようにスケジューリングを調整してください。
COVERAGE_STATS_DELTA
「Delta データ スキッピング」の統計がテーブル スキャン ファイル フィルターに不足しているか不完全なため、クエリではファイル内フィルターが使用されます。
各フィルターの統計ステータスは、以下のいずれかになります:
- 全体: 統計はすべてのフィルターで利用可能です。
- 一部: フィルターのサブセットで統計が利用可能です。
- 利用不可: 統計はいずれのフィルターでも利用できません。
- 未使用: フィルターによってデータ型が変換されるため、統計は使用できません。
**推奨事項:** Delta 統計を収集 することで、読込バイト数を削減できます。
COVERAGE_STATS_OPTIMIZER
コストベースオプティマイザ(CBO)の統計情報が不足しているか不完全なため、クエリプランは標準のヒューリスティックを使用します。
推奨事項: オプティマイザがより良いプランを作成できるように、統計を収集 してください。
データスキュー
データはコンピューティング リソース間で不均等に分散されています。
推奨事項: データ分散を確認し、キーソルティングまたは事前集計を使用してワークロードのバランスを取ります。
コンピュートとリソースの知見
データ漏洩
データがメモリに収まらなかったため、クエリー実行中にディスクにスピルしました。
推奨事項: メモリを追加するために、ウェアハウスのサイズを拡大してください。メモリ使用量を削減するため、行数、列数、または大きい列(文字列、配列、マップ、構造体)のサイズを削減してください。
過剰な待ち時間
クエリはウェアハウスキューで待機していました。
推奨:ウェアハウスの クラスターの最大数 を増やすことで、キュー時間を短縮します。
IO_スロットリング
クラウド プロバイダーによって、クラウド ストレージのリクエストがスロットルされました。
推奨事項:クラウドプロバイダーからのストレージリクエスト上限の引き上げを管理者に依頼してください。
その他のリソース
パフォーマンスのベストプラクティスについてより詳しく知るには、Databricks、Spark、Delta Lake のワークロードを最適化するための包括的なガイドを参照してください。