TiDB Explain执行计划

一.    PingCAP官网执行算子的解释。

    1.TableFullScan全表扫描.

    2.TableRangeScan带有范围的表数据扫描.

    3.TableRowIDScan:根据上层传递下来的 RowID 扫描表数据。时常在索引读操作后检索符合条件的行。

    4.IndexFullScan:另一种“全表扫描”,扫的是索引数据,不是表数据。

    5.IndexRangeScan:带有范围的索引数据扫描操作。

    TiDB 会汇聚 TiKV/TiFlash 上扫描的数据或者计算结果,这种“数据汇聚”算子目前有如下几类:

    1.TableReader:将 TiKV 上底层扫表算子 TableFullScan 或 TableRangeScan 得到的数据进行汇总。

    2.IndexReader:将 TiKV 上底层扫表算子 IndexFullScan 或 IndexRangeScan 得到的数据进行汇总。

    3.IndexLookUp:先汇总 Build 端 TiKV 扫描上来的 RowID,再去 Probe 端上根据这些RowID精确地读取 TiKV 上的数据。Build 端是IndexFullScan或IndexRangeScan类型的算子,Probe 端是TableRowIDScan类型的算子。

    4.IndexMerge:和IndexLookupReader类似,可以看做是它的扩展,可以同时读取多个索引的数据,有多个 Build 端,一个 Probe 端。执行过程也很类似,先汇总所有 Build 端 TiKV 扫描上来的 RowID,再去 Probe 端上根据这些 RowID 精确地读取 TiKV 上的数据。Build 端是IndexFullScan或IndexRangeScan类型的算子,Probe 端是TableRowIDScan类型的算子。

二.    task解释。

Cop task 是指使用 TiKV 中的 Coprocessor 执行的计算任务,root task 是指在 TiDB 中执行的计算任务。

三.    operator info结果。

    1. range: [1,1]表示查询的WHERE字句 (a = 1) 被下推到了 TiKV,对应的 task 为cop[tikv]。

    2.keep order:false表示该查询的语义不需要 TiKV 按顺序返回结果。如果查询指定了排序(例如SELECT * FROM t WHERE a = 1 ORDER BY id),该字段的返回结果为keep order:true。

    3.stats:pseudo表示estRows显示的预估数可能不准确。TiDB 定期在后台更新统计信息。也可以通过执行ANALYZE TABLE t来手动更新统计信息。


四.    Explain analyze

Explain analyze是展示实际数的结果。结果可能有误差

先执行ANALYZE TABLE再执行EXPLAIN ANALYZE,预估数与实际数会更接近

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容