tidb结果传输慢,问题定位

【 TiDB 使用环境】
centos 7.6 16vcpu. 64G内存 2T硬盘
tidb版本:5.7.25-TiDB-v5.2.2
mysql版本:5.7.32

【概述】 场景 + 问题概述
原来使用mysql,一个sql查询出来5w的数据耗时35s,程序等待返回结果耗时60s;
现在使用tidb,同样的sql,查询耗时23s,程序等待返回结果耗时150s

【问题】 当前遇到的问题
mysql和tidb对查询结果的传输有什么不同的实现方案吗?
为tidbsql查询的速度快了,但是传输结果的时间会差这么多?

1 个赞
  1. 数据规模
  2. 数据表的模式和结构
  3. 索引是否合理
  4. 查询 SQL 是否合理 (可以参照执行计划)

以上的信息,希望你能提供一下
对于单表数据小于2kw,上tidb 感觉没啥意义… mysql 优化后,会更快的

1 个赞

两个表联合查询,a (400w)inner join b(600w);
已经定位到这个问题的原因了,这个sql查出来数据会每条数据都去库里再做一个补充数据的sql,
另外一个sql单条查询次数很多,但是有5w次查询

慢查询吧,要考虑怎么优化了

600w的表,查询已经使用主索引了,可以说是速度没多大的优化空间了,但是对于这个数量级的表来说mysql确实要比tidb要快,次数多了以后整体的执行时间就比原来多了不少
现在是只能从业务上考虑能不能把这种sql改成大批量的操作

1 个赞

对于这个在做一个补充数据的SQL,是插入或者更新吧,其实可以通过insert into… 你原来的SQL语句的变种;
或者
update T set () = …
Where … IN (你原来的SQL语句的变种)
这样批量插入或更新的方式,比你5W次单独的操作要快。

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。