分析レポートは、分析エンジンにおけるSQL実行の詳細情報を正確に記述でき、SQL実行の所要時間に関する具体的な問題を分析するために使用されます。本稿では、SQL分析レポートの各フィールドの意味について詳細に説明します。
SQL分析レポートの参照
2. トランザクションクラスタ配下の読み取り専用分析エンジンによって生成されたSQL分析レポートを表示する場合は、操作ログページを選択し、左側のドロップダウンリストからクエリする読み取り専用分析エンジンを選択し、リスト内で対応するスローSQLを見つけ、そのSQL分析レポート列で分析レポートを生成をクリックします。分析クラスタによって生成されたSQL分析レポートを表示する場合は、スローSQL明細ページを選択し、リスト内で対応するスローSQLを見つけ、そのSQL分析レポート列で分析レポートを生成をクリックします。
3. 分析レポートの生成には約5分かかります。生成が完了したら、分析レポートのダウンロードをクリックすると、分析レポートをローカルにダウンロードできます。
説明:
ChromeまたはFirefoxの新しいバージョンをご利用ください。
4. 分析レポートをダウンロードした後、解凍が必要です。解凍後、index.htmlファイルを開いてください。その後、ブラウザでSQL分析レポートの詳細を確認できます。
分析レポートの詳細
SQL分析レポートは三つの部分に分かれます:
性能概要:実行されたSQL文および関連する基本情報を表示します。 実行計画:SQL実行計画の推定行数と実際の返却行数などの主要指標を表示します。 オペレータ実行時間分布:実行計画における各オペレータのCPU使用時間を表示し、実行性能の評価に使用されます。 性能概要
性能概要セクションには以下の三つの情報が含まれます:
基本情報と時間概要:インスタンスID、実行ノードID、内部追跡用TraceID、および実行フローの各種指標が含まれます。
SQL文テキスト:今回実行された完全なSQL文を表示します(最大保存長さは4MBで、上限を超えると自動的に切り捨てられます)。
テーブル構造情報:デフォルトでは折りたたまれて表示され、クリックすると今回のクエリに関連するすべてのテーブル構造を展開できます。
基本情報と時間概要
基本情報には、ユーザーのインスタンスID、ノードID、および内部追跡用TraceIDが含まれます。
分析エンジンはユーザーのSQLを受信すると、SQLの字句解析と構文解析を行い、プランツリーにコンパイルします。その後、統計情報に基づいてプランツリーを最適化し、最終的な実行計画を生成します。総覧で対応する時間はそれぞれ:
総時間:SQL実行の全プロセス所要時間です。
解析時間:SQLの字句解析/構文解析の所要時間。
コンパイル時間:SQLをプランツリーにコンパイルする所要時間です。
最適化時間:統計情報に基づく実行計画の最適化所要時間です。
実行計画
実行計画は現在のSQLの詳細な実行計画ツリー構造を表示し、以下の5つのコア構成要素が含まれます:
オペレータID:オペレータIDはプランツリーの基本識別子です。各SQL文は複数のオペレータで構成されるプランツリーに解析されます。オペレータIDは「オペレータタイプ_ユニークID」形式(例:FILTER_14)を採用しており、ツリー内の各オペレータノードに一意の識別子を提供します。
推定行数:オペレータの推定行数は、オプティマイザが実行計画を策定する際の重要な参考指標です。テーブルの統計情報とインデックス状況に基づき、オプティマイザは各オペレータが出力する可能性のあるデータ行数を予測します。注意点として、データ分布の複雑さのため、この推定値は実際の結果と差異が生じる場合があります。
実行数:クエリが実際に実行された後、この数値によって当該オペレータが実際に処理したデータ行数を記録できます。これはクエリ実行プロセスにおける実際のデータ処理量を反映しています。推定行数と実行数を比較することで、オプティマイザの判断精度を理解するのに役立ちます。
実データ量:実データ量はオペレータが出力する物理データのサイズを示し、通常バイト単位で表されます。これは実行数と各行データの平均サイズによって共同で決定され、データ処理プロセスにおけるリソース消費と実データ量をより包括的に把握できます。
オペレータ詳細情報:各オペレータには固有の詳細情報が含まれます。この内容はオペレータのタイプによって異なります。
オペレータ実行時間分布
SQL実行の性能分析において、オペレータ実行時間分布図は重要な視点を提供します。各オペレータが消費するCPUタイムスライスの割合を明確に確認できます。色分けされた領域の面積サイズを観察することで、実行計画全体の中で最も時間を要するオペレータを直感的に特定できます。
当該オペレータの色付きブロック領域にマウスを重ねると、システムが詳細な情報カードを表示します。このカードには以下の3つの核心次元が含まれます:
オペレータID:現在のオペレータを正確に識別します(例:Join_5)。
CPUタイムスライス値:当該オペレータが実際に占有するCPU時間を表示します(単位:ナノ秒ns)。
タイムスライス割合:パーセンテージ形式で当該オペレータの総所要時間における重要度を表示します。