TiDB 如何知晓查询计划里每个算子预估的代价

  1. 第一行的cost就是总的cost
  2. 由于tikv有多个节点,有的算子是在多个tikv节点并行进行的,所以并不是单纯的累加,会对这部分做处理

具体可以去看看源码,虽然我也还没看 :smiling_imp:

你好,谢谢回复,我想补充咨询一下这里的estCost在执行 explain analyze 阶段的时候,是基于真实的基数进行计算得出的,还是说还是基于 estRows 计算的呢?

cost

理应当是基于estRows算出来的,但是有一部分结合了实际的执行行为,但是这块具体我没有研究过。

简单看了下,当format=true_card_cost时应该是基于实际结果值算出来的。

可以看看这个文章:专栏 - TiDB 执行计划代价模型分析 | TiDB 社区

这个应该比较复杂吧,有一套紧密的算法,一个数据库成功的关键,不是三言两语说的清楚的吧

学习了