は、クエリ、ステージ、および演算子レベルでSQLクエリ情報の統計を個別に収集し、統計を使用して問題を診断し、最適化の提案を提供するSQL診断機能を提供します。 このトピックでは、クエリレベルの診断結果を表示および分析する方法について説明します。
診断結果タイプ
注 クエリレベルの診断結果を表示する方法については、「t2103386.html#section_pyn_ffn_io2」をご参照ください。
大量のデータがクライアントに返されます
- 問題大量のデータがクライアントに返されると、クエリの速度が低下し、フロントエンドネットワークリソースを占有する可能性があります。
- 提案
- クライアントに返されるデータの量を減らします。 たとえば、LIMITキーワードを追加したり、データのクエリ時にフィルター条件を追加したりできます。
- 外部テーブルを使用して他のシステムにデータをエクスポートし、クライアントに返されるデータ量を減らします。 たとえば、Object Storage Service (OSS) にデータをエクスポートできます。 詳細については、「t1854420.html#task2264」をご参照ください。
大量のメモリリソースがクエリによって消費されます
- 問題クエリは大量のメモリリソースを消費します。 これにより、他のクエリで実行エラーが発生し、実行速度が低下し、クラスター全体の安定性に影響を与える可能性がます。
- 提案
まず、クエリが大量のメモリリソースを消費する理由を特定します。 次に、SQL診断の実行計画を使用して、大量のメモリリソースを消費しているステージまたは演算子を見つけ。 詳細については、「メモリリソースを消費する低速クエリ」と「実行計画を使用したクエリの分析」をご参照ください。
クエリに対して多数のステージが生成されます。
- 問題クエリに対して多数のステージが生成される。 これらの段階は、大量のネットワークリソースを占有し、システム処理をより複雑にし、クラスタの全体的な安定性にリスクをもたらす。注 詳細については、「クエリのパフォーマンスに影響を与える要因」をご参照ください。
- 提案
- データがクラスターに書き込まれる前に、クラスター内のテーブルを結合してテーブルの数を減らします。
- SQL文の結合の数が多いほど、クエリのによって生成されるステージの数が多くなります。 したがって、結合の数を減らして、生成されるステージの数を減らすことができます。
- マテリアライズドビューを使用してクエリを実行する場合、ステージを再利用して、クエリに対して生成されるステージの数を減らすことができ。 詳細については、「概要」をご参照ください。
大量のデータがクエリによって読み取られる
- 問題クエリは大量のデータを読み取り、大量のディスクI/Oリソースを消費し、他のクエリやデータ書き込みに影響を与えます。
- 提案
まず、大量のデータを読み取っているステージと関連するTableScan演算子を見つけます。 実行計画の統計情報セクションで、ステージまたは行数を入力してくださいのスキャン行数とスキャンボリューム、およびTableScan演算子の入力サイズを、SQL診断のステージまたは演算子レベルで表示ことができます。 詳細については、「状態統計」および「オペレーター統計」をご参照ください。
大量のデータをスキャンするTableScan演算子を見つけたら、次のいずれかの方法を使用して最適化を実行できます。- クエリにANDフィルター条件を追加します。
- 既存のフィルター条件を調整して、フィルターされるデータの量を減らします。
- プッシュダウンされないフィルター条件が存在するかどうかを確認します。 これらのフィルタ条件が存在する場合、最適化を実行するt2101552.html#section_b9y_az4_nreに最適化提案を参照します。