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

PolarDB:EXPLAIN

最終更新日:May 23, 2024

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にヒットするかどうかを示します。 有効な値はfalsetrueです。 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秒)