执行计划中的 loops 是表示当前算子被父算子调用的次数,所以
- 执行计划中的 loops 15,表示算子IndexRangeScan_19(Build) 被父算子 IndexLookUp_22 调用了 15 次。
- 执行计划中的 loops13,表示算子 TopN_21(Probe) 被父算子 IndexLookUp_22 调用了 13 次。
扫描数据 Region 是通过 Cop Task 任务来完成的,一次task扫描一个 Region, cop task 中的 num 表示 Task 的数量。“loops:13, cop_task: {num: 15, ” 这里的“num: 15” 就表示扫描 15 个 Region。前面我提到的用 distsql_concurrency 来估计计算并不准确,它是Coprocessors扫描 Region内的并发数,和这个无关。
另外,查看执行计划时也可以重点关注一下算子的执行时间。即 execution info 中的 time,它表示从进入算子到离开算子的全部执行时间,如果该算子被父算子多次调用 (loops),这个时间就是累积的总时间。可以通过它确认某个环节慢的问题,是性能分析时的关键指标之一。