天天看點

大資料ClickHouse進階(十二)ClickHouse的explain查詢執行計劃

作者:Lansonli

#頭條創作挑戰賽#

ClickHouse的explain查詢執行計劃

大資料ClickHouse進階(十二)ClickHouse的explain查詢執行計劃

ClickHouse在版本20.6.3之後支援explain檢視執行計劃。explain基本文法如下:

EXPLAIN [AST | SYNTAX | PLAN | PIPELINE] [setting = value, ...] SELECT ... [FORMAT ...]           
  • AST:用于檢視文法樹。
  • SYNTAX:用于查詢ClickHouse優化後的文法。
  • PLAN:用于檢視執行計劃,預設值。
  • PIPELINE:用于檢視PIPELINE計劃,相對于PLAN更加詳細。

一、AST檢視文法樹

node1 :) EXPLAIN AST SELECT id,name,age,local FROM mr_tbl;           
大資料ClickHouse進階(十二)ClickHouse的explain查詢執行計劃

二、SYNTAX檢視優化後文法,比較常用

node1 :) EXPLAIN SYNTAX SELECT t.id,t.name FROM (SEELCT id,name FROM person_info) t WHERE t.id <3;           
大資料ClickHouse進階(十二)ClickHouse的explain查詢執行計劃

三、PLAN:用于檢視執行計劃,預設值

在使用PLAN時有一些設定:

  • header:列印計劃中各個步驟的輸出頭,預設關閉,預設值0。
  • description:列印計劃中各個步驟的描述,預設開啟,預設值1。
  • indexes:列印計劃中使用的索引,預設關閉,預設值0,支援MergeTree表引擎。
  • actions:列印計劃中各個步驟的詳細資訊,預設關閉,預設值0.
  • json:列印計劃步驟時使用json格式展示,預設關閉,預設值0,建議使用預設TSVRaw格式,避免不必要的開銷。
node1 :) EXPLAIN  PLAN  SELECT id ,name ,age FROM mr_tbl;           
大資料ClickHouse進階(十二)ClickHouse的explain查詢執行計劃
#設定一些屬性後查詢結果
node1 :) EXPLAIN PLAN header=1,description=1,indexes=1,actions=1,json=1 SELECT id ,name ,age FROM mr_tbl;           
大資料ClickHouse進階(十二)ClickHouse的explain查詢執行計劃

以上關于json中詳細的字段解釋可以參照官網解釋:https://ClickHouse.com/docs/en/sql-reference/statements/explain/

四、PIPELINE:用于檢視PIPELINE計劃,相當于是PLAN更詳細的描述

在執行pipeline是也可以設定一些參數:

  • header:列印計劃中各個步驟的輸出頭,預設關閉,預設值0。
  • graph:使用DOT圖形語言描述管道圖,預設關閉,預設值0。
  • compact:如果graph開啟,以緊湊模式列印管道圖,預設開啟,預設值1。
node1 :) EXPLAIN PIPELINE header=1 SELECT sum(number) FROM numbers_mt(100000) GROUP BY number % 4;           
大資料ClickHouse進階(十二)ClickHouse的explain查詢執行計劃

繼續閱讀