单个接口执行四个统计sql,单次执行能在1s以内,并发度为10时sql全变成慢查询,且都在20秒左右

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:

【TiDB 版本】
4.0.12
【问题描述】
目前tikv配置是华为云ecs 3台12核24g
主表4千万的数据
单个接口执行四个统计sql,单次执行能在1s以内,每个sql都测试一秒以内,
并发度为30时sql全变成慢查询,且都在20秒左右
cpu基本都超过500
执行计划
image

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

目前表d是TableFullScan全表扫描,这个有可用的索引么?

目前这是全量统计,d无可用索引当页面触发条件时会走索引

也可以参考这里检查一下

咨询下,cpu打满的原因大概是什么,是磁盘io导致的吗

  1. 先看下服务器,哪个进程占用 cpu 多。如果是 tikv,可以看一下 grafana 监控里的 tikv-detail ,cpu 打满,主要是哪里占用的。 看 SQL,估计有可能是 coprocessor 消耗比较多吧。每次都要扫4000万的数据?
  2. 只有3台服务器吗? 那么集群拓扑是什么? tidb,pd,tikv 有共部署? 也可以看下 over-view 监控中,先从整体看看

谢谢答复 原来要用 EXPLAIN ANALYZE 才能查看到具体的执行行数,发现具体的执行行数是4kw所以导致cpu爆了

在咨询个sql问题,如下sql执行时未加limit选择了正确的索引但是加上limit就变成全表了,如果使用useindex 便可以一直使用正确的索引。我想知道出现这种情况的原因


看起来不是同一个问题,麻烦新开个贴吧,两个问题在一起,后面看的人会比较晕,多谢。

好的 大佬

感谢:grinning: