暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

金仓数据库KingbaseES 查询计划解读

原创 数据猿 2024-09-25
340

1 执行计划主要内容

执行计划里每个节点主要内容包括:
执行动作,及其附加条件,比如索引扫描,索引条件等
估算成本:启动cost、总体cost、估计返回的行数和平均宽度,如果开启了Analyze选项,还会返回:实际成本:启动cost、总体cost实际返回的行数,节点循环执行次数
我们以下例来说明,执行计划输出结果各部分的内容:
image.png

1、执行动作:

Index Scan:表示索引扫描
krds_instance_pkey:使用的索引名
krds_instance:访问的表名

整句话表示:访问krds_instance表的时候,使用的是索引扫描,扫描的索引是krds_instance_pkey。

2、成本估算

(cost=0.14…8.16 rows=1 width=7845)
cost=0.14…8.16
0.14 启动成本,也就是说返回第一行需要多少cost
8.16 表示返回所有的数据的成本。这两个数值用…分开
rows=1
表示该查询会返回1行记录。
width=7845
表示每行平均宽度为7845字节。
在执行计划里,每一步的cost值都传给了上一层,也就是说每一个cost值代表的是在此步以下所有操作的代价总和。

3、实际成本

(actual time=0.018…0.019 rows=0 loops=1)
actual time=0.018…0.019
表示实际的启动时间为0.018,实际的运行时间也为0.019。
rows=0
表示实际查询返回了0行记录(没有查询到)。
loops=1
表示该索引扫描只执行了1次。

4、索引条件

该句表示当前执行的索引扫描(Index Scan)使用的索引条件为:Index Cond: (id = ‘1’::numeric)
5、计划和执行时间
Planning Time: 0.180 ms
Execution Time: 0.072 ms
analyze的explain语句特有。表示生成执行计划用时0.180 ms,真正执行查询用时0.072 ms。

2执行计划执行顺序

image.png

2.1 计划节点

执行计划内部是树状结构,里面包含的节点主要有5类:扫描节点(Scan Node),连接节点(Join Node),物化节点(Materialization Node),控制节点(Control Node),并行节点(Parallel Node)。

  1. 扫描节点 :
    顺序扫描(Seq scan)
    索引扫描(Index scan)
    位图扫描(Bitmap scan)
    TID扫描(TID scan)
    覆盖索引扫描(Index only scan)
  2. 连接节点:
    嵌套循环连接(NestLoop join)
    哈希连接(Hash join)
    归并连接(Merge join)
  3. 物化节点:
    物化节点(Material)
    分组节点(Group)
    排序节点(Sort)
    去重节点(Unique)
  4. 控制节点:
    Result节点
    BitmapAnd/BitmapOr节点
    Append节点
    RecursiveUnion节点
  5. 并行节点:
    Gather/GatherMerge
    并行全表扫描(Parallel SeqScan)
    并行hash(Parallel Hash)
    并行连接(Parallel HashJoin/MergeJoin)
    并行聚集(Partial/Finalize Aggregate/HashAggregate/GroupAggregate)
    并行Append(Parallel Append)
    并行UNION(Parallel UNION)
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论