すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:Spark SQL診断

最終更新日:Nov 11, 2024

AnalyticDB for MySQLは、Spark SQL診断機能を提供します。 Spark SQLクエリにパフォーマンスの問題がある場合は、診断情報を使用してパフォーマンスのボトルネックをすばやく特定、分析、解決し、Spark SQLクエリを最適化できます。 このトピックでは、Spark SQL診断を実行する方法について説明します。

前提条件

  • AnalyticDB for MySQL Data Lakehouse Editionクラスターが作成されます。

  • AnalyticDB for MySQLクラスターのジョブリソースグループが作成されます。 詳細については、「リソースグループの作成」をご参照ください。

  • AnalyticDB for MySQLクラスター用のデータベースアカウントが作成されます。

  • AnalyticDB for MySQLは、AliyunADBSparkProcessingDataRoleロールを引き受けて他のクラウドリソースにアクセスする権限があります。 詳細については、「権限付与の実行」をご参照ください。

使用上の注意

診断は、過去14日間に正常に実行されたSpark SQLクエリに対してのみ実行できます。

手順

  1. AnalyticDB for MySQL コンソールにログインします。 ホームページの左上でリージョンを選択します。 左側のナビゲーションウィンドウで、クラスターリスト をクリックします。  

    [Data Lakehouse Edition] タブで、管理するクラスターを見つけ、クラスターIDをクリックします。

  2. 左側のナビゲーションウィンドウで、[診断と最適化] > [Spark SQL診断と最適化] を選択します。

    クエリリストには、診断用のSQLクエリに関する情報が表示されます。 次の表に、SQLクエリのパラメーターを示します。

    パラメーター

    説明

    アクション

    SQL文や診断結果などの実行の詳細を表示できる診断操作。

    SQL

    実行されたSQL文。

    クエリID

    クエリのID。

    実行ID

    Spark SQLアプリケーションのSQL文のシーケンスID。

    ステータス

    SQL文の実行ステータス。 有効な値:

    • 完了しました

    • Running

    • 失敗した

    開始日

    クエリが送信された時刻。

    実行期間

    SQL文の実行に費やされた時間。

    最大演算子専用時間

    オペレータがリソースを排他的に使用する最大実行時間。

    ピークメモリ

    クエリのピークメモリ使用量。

    スキャンされたデータ

    ストレージ層から計算層に返されるデータの量。

  3. 診断するSQLクエリを見つけて、[操作] 列の [診断] をクリックします。

  4. [クエリのプロパティ] ページで、[実行計画] タブをクリックして、クエリの実行計画ツリーの階層グラフを表示します。

  5. 実行プランツリーの右側にある [クエリレベルの診断結果] をクリックして、クエリレベルの診断結果を表示します。

クエリレベルの診断結果

AnalyticDB for MySQLは、診断のためのSQLクエリに関するクエリレベルの統計を収集し、最適化の提案を提供するSQL診断機能を提供します。

結合でデータが膨らむ

  • 問題の説明:

    結合演算子の出力行の数が入力行の数よりも大きい場合、結合演算は不合理であると見なされるため、データ膨張が発生します。 その結果、多数のコンピューティングリソースとメモリリソースが占有され、クエリが遅くなります。

  • 提案:

    結合演算に関与しないデータを事前にフィルタリングして処理するデータ量を減らすなど、コードを最適化します。

スキャンデータ量のスキュー

  • 問題の説明:

    Spark SQLクエリの実行中に複数のテーブル間でスキャンしたデータ量に大きな差がある場合、ロングテール効果によりデータの読み込みに時間がかかり、最終的なクエリのパフォーマンスに影響します。

  • 提案:

    適切な配布キー列を選択して、スキャンデータの量を減らします。