EXPLAINステートメントを実行して、SELECT、DELETE、INSERT、REPLACE、UPDATEなどのSQLステートメントの実行プランを照会できます。
構文
次の構文を使用して、SQL実行プランに関する情報を照会します。
説明
{LOGICALVIEW | ロジック | シンプル | ディテール | エグゼクティブ | 物理 | オプティマイザー | シェアリング
| コスト | 分析 | ベースライン | JSON_PLAN | アドバイザー}
{SELECT文 | DELETE文 | INSERT文 | REPLACE文 | UPDATE文} 例
- EXPLAIN: SQL実行プランに関する基本情報を表示します。 実行計画は演算子で構成されます。 この情報は、計算ノードでSQLステートメントがどのように実行されるかを示しています。
EXPLAIN L_ORDERKEYによるlineitemグループからの選択カウント (*); + ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + | ローカル実行 | + ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + | プロジェクト (count(*)="count(*)") | | HashAgg(group="L_ORDERKEY", count(*)="SUM(count(*))") | | 収集 (同時=true) | | LogicalView(tables="[000000-000003].lineitem_[00-15]" 、shardCount=16、sql="SELECT 'L_ORDERKEY' 、COUNT(*) AS 'count(*)'FROM 'lineitem' GROUP BY 'L_ORDERKEY'") | | HitCache:false | | | TemplateId: 5819c807 | + ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ +HitCacheは、クエリがPlanCacheにヒットするかどうかを示します。 有効な値はfalseとtrueです。TemplateIdは、SQL実行プランをグローバルに識別します。 - EXPLAIN LOGICALVIEW: データノードにプッシュされたSQL実行プランのLogicalView演算子に関する情報を表示します。
EXPLAIN LOGICALVIEW select count(*) from lineitem group by L_ORDERKEY; + ---------------------------------------------------------- + | ローカル実行 | + ---------------------------------------------------------- + | プロジェクト (count(*)="count(*)") | | HashAgg(group="L_ORDERKEY", count(*)="SUM(count(*))") | | 収集 (同時=true) | | LogicalView | | MysqlAgg(group="L_ORDERKEY" 、count(*)="COUNT()") | | MysqlTableScan(name=[広告、ラインアイテム]) | | HitCache:true | | ソース: PLAN_CACHE | | TemplateId: 5819c80 7 - EXPLAIN EXECUTE: MySQLにプッシュダウンされたSQL実行プランに関する情報を表示します。 このステートメントは、MySQLのEXPLAINステートメントに相当します。 EXPLAIN executeステートメントを実行して、データノードにプッシュダウンされたSQL実行プランがインデックスを使用するか、テーブル全体のスキャンを実行するかを確認できます。
EXPLAIN EXECUTEは、L_ORDERKEYによってlineitemグループからカウント (*) を選択します。---- ----------- ---------------------------------------------------------------------------------------... | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | ---- ----------- ---------------------------------------------------------------------------------------... | 1 | SIMPLE | lineitem | NULL | index | PRIMARY | 8 | NULL | 1 | 100 | インデックスの使用; 一時的な使用; filesort | ---- ----------- ---------------------------------------------------------------------------------------... 1行セット (0.24秒) - EXPLAIN SHARDING: 現在のクエリを処理するためにデータノードでスキャンされた物理シャードに関する情報を表示します。
EXPLAIN SHARDING select count(*) from lineitem group by L_ORDERKEY; -------------- ---------------------------------- ------------------------------------------------- | LOGICAL_TABLE | SHARD_COUNT | 放送 | 条件 | -------------- ---------------------------------- ------------------------------------------------- | lineitem | [000000-000003].lineitem_[00-15] | 16 | false | | -------------- ---------------------------------- ------------------------------------------------- 1行セット (0.04秒) - EXPLAIN COST: EXPLAINステートメントよりも詳細を提供します。 このステートメントには、各オペレータの推定コストと、オプティマイザによって識別されるクエリのワークロードも表示されます。
EXPLAIN COST select count(*) from lineitem group by L_ORDERKEY; + ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + | ローカル実行 | + ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + | プロジェクト (count(*)="count(*)"): rowcount = 2508.0、累積コスト=値=2.4867663E7、cpu = 112574.0、メモリ=88984.0、io = 201.0、net = 4.75、id = 182 | | HashAgg(group="L_ORDERKEY" 、count(*)="SUM(count(*))"): rowcount = 2508.0、累積コスト=値=2.4867662E7、cpu = 112573.0、memory = 88984.0、io = 201.0、net = 4.75、id = 180 | | 収集 (同時=true): rowcount = 2508.0、累積コスト=値=2.4860069E7、cpu = 105039.0、メモリ=29796.0、io = 201.0、net = 4.75、id = 178 | | LogicalView(tables="[000000-000003].lineitem_[00-15]" 、shardCount=16、sql="SELECT 'L_ORDERKEY' 、COUNT(*) AS 'count(*)'FROM 'lineitem' AS 'lineitem 'GROUP BY 'L_ORDERKEY' 、累積コスト=68cpu=メモリ値、29796.0=105038.0=2508.0、201.0 2.E7=600") net = 4.75, id = 109 | | HitCache:true | | ソース: PLAN_CACHE | | WorkloadType: TP | | TemplateId: 5819c80 7 - EXPLAIN ANALYZE: EXPLAIN COSTステートメントよりも詳細を提供します。 このステートメントには、rowCount情報などの各演算子の出力も表示されます。
EXPLAIN ANALYZE select count(*) from lineitem group by L_ORDERKEY; + ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + | ローカル実行 | + ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + | プロジェクト (count(*)="count(*)"): rowcount = 2508.0、累積コスト=value = 2.4867663E7、cpu = 112574.0、メモリ=88984.0、io = 201.0、net = 4.75、実際の時間=0.001 + 0.000、実際のrowcount = 2506、実際のメモリ=0、インスタンス=1、id = 182 | | HashAgg(group="L_ORDERKEY" 、count(*)="SUM(count(*))"): rowcount = 2508.0、累積コスト=value = 2.4867662E7、cpu = 112573.0、memory = 88984.0、io = 201.0、net = 4.75、実時間=0.000 + 0.000、実行数=2506、実メモリ=0、インスタンス=1、id | 180 | 収集 (同時=true): rowcount = 2508.0、累積コスト=値=2.4860069E7、cpu = 105039.0、メモリ=29796.0、io = 201.0、net = 4.75、実際の時間=0.000 + 0.000、実際のrowcount = 0、実際のメモリ=0、インスタンス=0、id = 178 | | LogicalView(tables="[000000-000003].lineitem_[00-15]" 、shardCount=16、sql="SELECT 'L_ORDERKEY' 、COUNT(*) AS 'count(*)'FROM 'lineitem' AS 'lineitem 'GROUP BY 'L_ORDERKEY' 、累積コスト=68cpu=メモリ値、29796.0=105038.0=2508.0、201.0 2.E7=600") net = 4.75、実時間=0.030 + 0.025、実行カウント=10000、実メモリ=0、インスタンス=0、id = 109 | | HitCache:true | | ソース: PLAN_CACHE | | TemplateId: 5819c807 | + ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + セットの7行 (1.08秒) - EXPLAIN PHYSICAL: クエリの実行モード、フラグメントの依存関係、およびフラグメントの並列処理の程度を表示します。 次の例では、クエリの実行モードはTP_LOCALです。 このモードでは、クエリは単一のノード上の単一のスレッドによって処理されます。 実行プランは、フラグメント0、フラグメント1、およびフラグメント2のフラグメントで構成されます。 システムは、すべてのフラグメントのデータを集約する前に、各フラグメントに対して事前集約を実行します。 したがって、フラグメントの並列度は異なる可能性があります。
EXPLAIN PHYSICAL L_ORDERKEYによるlineitemグループからの選択カウント (*); + -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + | プラン | + -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + | ExecutorMode: TP_LOCAL | | フラグメント0の依存関係: [] parallelism: 4 | | 収集 (同時=true) | | LogicalView(tables="[000000-000003].lineitem_[00-15]" 、shardCount=16、sql="SELECT 'L_ORDERKEY' 、COUNT(*) AS 'count(*)'FROM 'lineitem' GROUP BY 'L_ORDERKEY'") | | フラグメント1の依存関係: [] parallelism: 8 | | LocalBuffer | | RemoteSource(sourceFragmentIds=[0] 、type=RecordType(INTEGER L_ORDERKEY、BIGINT count(*))) | | フラグメント2の依存関係: [0, 1] parallelism: 8 | | プロジェクト (count(*)="count(*)") | | HashAgg(group="L_ORDERKEY", count(*)="SUM(count(*))") | | RemoteSource(sourceFragmentIds=[1], type=RecordType(INTEGER L_ORDERKEY, BIGINT count(*))) | + -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + セットの11行 (0.10秒) - EXPLAIN ADVISOR: 収集した統計情報に基づいてクエリの実行計画を分析し、クエリの高速化に役立つグローバルセカンダリインデックスを返します。
EXPLAIN ADVISOR select count(*) from lineitem group by L_ORDERKEY \G; *************************** 1。 行 *************************** IMPROVE_VALUE: 4.4% IMPROVE_CPU: 340.8% IMPROVE_MEM: 0.0% IMPROVE_IO: 1910.0% IMPROVE_NET: 0.0% BEFORE_VALUE: 2.48676627E7 BEFORE_CPU: 112573.7 BEFORE_MEM: 88983.8 BEFORE_IO: 201 BEFORE_NET: 4.7 AFTER_VALUE: 2.38256249E7 AFTER_CPU: 25536 AFTER_MEM: 88983.8 AFTER_IO: 10 AFTER_NET: 4.7 ADVISE_INDEX: ALTER TABLE 'ads'.'lineitem' ADD GLOBAL INDEX '__advise_index_gsi_lineitem_L_ORDERKEY'('L_ORDERKEY') DBPARTITION BY HASH('L_ORDERKEY') TBPARTITION BY HASH('L_ORDERKEY') TBPARTITIONS 4; NEW_PLAN: プロジェクト (count(*)="count(*)") HashAgg(group="L_ORDERKEY", count(*)="SUM(count(*))") 収集 (concurrent=true) IndexGROUP (tables="[000000-000003].lineitem__what_if_gsi_L_ORDERKEY_[00-15]" 、shardCount=16、sql="SELECT 'L_ORDERKEY '、COUNT(*) AS 'count(*)' FROM 'lineitem_OR_if_gsi_OR_OR_KEID_KEY '' '' ''_KEY '' '' '' 'KEY' 情報: GLOBAL_INDEX 1行セット (0.13秒)