tidb 返回大结果集慢的问题优化建议

【 TiDB 使用环境】生产环境
【 TiDB 版本】5.4
各位老铁们,使用tidb跑线上大sql时,对比之前用的mysql发现:
1、在返回结果集小的查询,比如聚合,分页查询,速度很快,tidb优于mysql
2、在返回大结果集,比如一下查询导出百万行级别数据,tidb慢于mysql。
请问针对第二种情况,请问有那些优化建议(tidb层面,业务层面,或其他)。谢谢!!!

需要看具体SQL、执行计划、表结构等

很多都是导出类型的sql,大查询。所以从sql 优化 角度来说意义不大。主要是看除优化sql之外别的思路和办法。

简单的单表查询?怎么也得先看看SQL才知道怎么去考虑

导出数据 ? 你可以参考一下 dumpling 的设计,根据_tidb_rowid进行分片导出。

我觉得首先应该避免这种大sql的查询,可以进行拆分 分批去取。大事务转小事务解决。

这个特别是涉及到排序相关的会更明显。
单独一个MySQL实例的话,有索引的情况下,直接利用索引的排序特性,不断的拉数据就行了。
但是在tidb里面,数据节点是多个,过滤条件不好的情况下,得把数据都从tikv节点拉到tidb server节点来做排序,速度可能就慢了,而且还可能导致OOM。

抛开sql谈优化,就是耍流氓 :smile:
并且专业的组件做专业的事,既然官方提供了高速导出组件为什么不用呢?

执行计划起码贴出来看下吧,不然咋知道问题在哪。。。

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