ClickHouse SQL 极简教程使用EXPLAIN 分析 SQL 执行计划
Posted 东海陈光剑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ClickHouse SQL 极简教程使用EXPLAIN 分析 SQL 执行计划相关的知识,希望对你有一定的参考价值。
1.1. 使用 EXPLAIN 分析 SQL 执行计划
本节介绍如何使用EXPLAIN命令分析SQL语句的执行计划。
1.1.1. EXPLAIN概述
执行计划是进行SQL查询调优的重要参考。在ClickHouse 中,可以使用EXPLAIN语句查看SQL查询的执行计划。EXPLAIN 的语法如下:
EXPLAIN [AST | SYNTAX | PLAN | PIPELINE | TABLE OVERRIDE]
[setting = value, ...]
[
SELECT ... | tableFunction(...) [COLUMNS (...)]
[ORDER BY ...]
[PARTITION BY ...]
[PRIMARY KEY]
[SAMPLE BY ...]
[TTL ...]
]
[FORMAT ...]
例如,执行 EXPLAIN 查看如下 SQL 的执行计划:
EXPLAIN
SELECT sum(number)
FROM numbers(10)
UNION ALL
SELECT sum(number)
FROM numbers(10)
ORDER BY sum(number) DESC
FORMAT TSV
Query id: 6c7d7f0f-d875-4e55-b557-0088c3c6b563
Union
Expression ((Projection + Before ORDER BY))
Aggregating
Expression (Before GROUP BY)
SettingQuotaAndLimits (Set limits and quota after reading from storage)
ReadFromStorage (SystemNumbers)
Expression (Projection)
Sorting (Sorting for ORDER BY)
Expression (Before ORDER BY)
Aggregating
Expression (Before GROUP BY)
SettingQuotaAndLimits (Set limits and quota after reading from storage)
ReadFromStorage (SystemNumbers)
13 rows in set. Elapsed: 0.002 sec.
还可以可视化查看 SQL 执行管道流水线 Pipeline,如下图(在后面的章节中,我们会介绍如何生成这样的图):
1.1.2. EXPLAIN类型
EXPLAIN 常用语句类型如下:
1. EXPLAIN AST:用于查看抽象语法树(Abstract Syntax Tree)。支持查看所有类型的语句,不光是SELECT语句。
2. EXPLAIN SYNTAX: 查询经过AST层优化后的 SQL 语句;
3. EXPLAIN PLAN:用于查看执行计划(Execution Plan),等价于直接使用 EXPLAIN。可以指定五个参数;
① header:是否打印计划中各个步骤的 header 说明。1:开启,0:关闭(默认值);
② description:是否打印计划中各个步骤的描述。1:开启(默认值),0:关闭;
③ indexes:是否显示索引使用情况。1:开启,0:关闭(默认值);
④ actions:是否打印计划中各个步骤的详细信息。1:开启,0:关闭(默认值);
⑤ json:是否以 JSON 格式打印执行计划的详细信息。1:开启,0:关闭(默认值);
4. EXPLAIN PIPELINE:用于查看 Pipeline 计划,可以指定三个参数;
① header:是否打印计划中各个步骤的 header 说明。1:开启,0:关闭(默认值);
② graph:是否用DOT纯文本图形语言描述管道图。1:开启,0:关闭(默认值);
③ compact:如果开启了 graph,紧凑打印行开关。1:开启(默认值),0:关闭;
5. EXPLAIN ESTIMATE:显示在处理查询时要从表中读取的行、标记和部分的估计数量。适用于 MergeTree系列表引擎。
1.1.3. EXPLAIN AST
查看查询的抽象语法树(AST)。
一个最简单的 SELECT 查询的AST
EXPLAIN AST
SELECT 1
以上是关于ClickHouse SQL 极简教程使用EXPLAIN 分析 SQL 执行计划的主要内容,如果未能解决你的问题,请参考以下文章
ClickHouse SQL 语法基础极简教程 + bitmap 位图数据类型的使用实例
ClickHouse SQL 极简教程ClickHouse SQL之数据定义语言 DDL