天天看點

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

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

文章目錄

​​ClickHouse的explain查詢執行計劃​​

​​一、AST檢視文法樹​​

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

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

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

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更詳細的描述

  • header:列印計劃中各個步驟的輸出頭,預設關閉,預設值0。
  • graph:使用DOT圖形語言描述管道圖,預設關閉,預設值0。
  • compact:如果graph開啟,以緊湊模式列印管道圖,預設開啟,預設值1。
node1 :) EXPLAIN PIPELINE header=1 SELECT sum(number) FROM numbers_mt(100000) GROUP BY number % 4;      
  • 📢歡迎點贊 👍 收藏 ⭐留言 📝 如有錯誤敬請指正!
  • 📢本文由 Lansonli 原創
  • 📢停下休息的時候不要忘了别人還在奔跑,希望大家抓緊時間學習,全力奔赴更美好的生活✨