查询性能慢,没有mysql快

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】6.5
【复现路径】
【遇到的问题】
1、通过两条sql语句和mysql做了对比,查询效率都不如mysql。mysql是单机 部 署,tidb是集
群部署,理论上将tidb利用了mpp思想并发计算应该更快才对啊,我想知道大家是不是也 有
类似的问题?
2、我们之所以用tidb替换mysql,一方面是想解决数据量大的问题,tidb可以横向扩容,另一方面
想解决表数据量大以后mysql查询速度慢的问题,难道tidb的多节点分片、mpp并行计算不比
mysql单节点效率高吗?
【资源配置】mysql单机部署,tidb3个pd节点,6个kv节点。服务器配置都是一样的。
【附件:截图/日志/监控】
1、简单sql(注:rcc_d_houseMeterHistoricalData表数据量1亿5千万数据量)

2、复杂sql(注:rcc_d_houseMeterHistoricalData表数据量1亿5千万数据量)

按照你的思路,可以对比下执行计划,(按照提供的数据量,simple 查询 【命中索引不回表】 tidb 秒级返回…)

mysql 能优化的空间有多大,你肯定清楚
tidb 的优化以及使用规则,你还需要在学习学习… :upside_down_face:

1 个赞

你的截图是mysql还是tidb,给一下对比数据呀。
可调的空间很大的

1 个赞

我截图的是tidb,mysql的查询速度差不多能快3到5秒

把这两个SQL的 explain analyze信息贴出来看下。
explain analyze

不贴执行计划,没办法做比较啊。多一个索引,少一个索引,统计信息不一致,都有可能执行速度不一样。

2 个赞

1、简单sql执行计划

2、复杂sql执行计划

执行计划信息不全
TableReader算子总执行时间:15.2s,copTask一共345个,每一个copTask平均执行时间(在tidb侧)167.9ms,因此推测并行度是4-5左右。
是不是调了tidb_distsql_scan_concurrency这个参数呢,默认是15,可以查下贴出来看看。
show variables like ‘tidb_distsql_scan_concurrency’;


这个time有参考意义吗,感觉每次执行结果相差很大

你把mysql的执行计划也贴出来看看,不会是mysql 上有索引,tidb没索引吧?

1 个赞


有索引,条件planTime就是主键

这个表的结构是啥? 聚簇,非聚簇?

1 个赞


聚簇索引

但是你tidb上没有走索引,走的全表扫啊。。。你tidb上的统计信息是最新的吗?

1 个赞

让我来帮你做sql调优 :melting_face:

tableRangeScan不是是范围扫描,不是全表扫描吧?

感谢大佬,开整吧 :smiley:

方便上传一下sql,完整执行计划,涉及的相关表结构吗

MPP 框架 需要tiflash 节点吧。 您没部署这类节点吧

1 个赞