关于scan算子个数的疑问(tidb_distsql_scan_concurrency 无效?)

totaltoken count =2说明你的请求涉及到的copTask请求数是2。
有几个distsql并发扫描的概念我是这么理解的:
1、tidb_distsql_scan_concurrency代表的是最大扫描并行度(简单理解为对region的并发扫描数),如果表中并没有这么多region(或者请求扫描的region数<tidb_distsql_scan_concurrency),那么最大扫描并发数是有多少请求就并发做多少,假设实际的并发度即为:real_tidb_distsql_scan_concurrency(后续用)。
2、token limit,这个是流控用的主要手段,total token count是初始化时候池子中初始化的令牌数(等于real_tidb_distsql_scan_concurrency),remain token count是当前可用的令牌数(开始等于total token count),当触发了流控后会对remain token count一个一个销毁,直到语句内存小于tidb_mem_quota_query,最低保留1个,但是oomAction会fallback到次优先级的oomAction。
3、语句实际执行信息中会有copTask请求,这里的copTask请求是tikv的reponse回来后tidb应用后才统计的结果,比如:select * from table limit 1,假设表非常大,在执行信息中看到的copTask数也只有1,实际下发的copTask请求会有tidb_distsql_scan_concurrency个(在日志中应会有体现),也就是有一些场景下tikv资源略有浪费。