想问一下,TiDB分页查询时候,他的执行流程是啥样的啊,网上没找到相关文档
比如有4个 tikv,分别是tikv1 tikv2 tikv3 tikv4
有一张表t 他有这三个分区,并且其id数据为 t_region1(0-100)、t_region2(101-200)、t_region3(201-300)
其中
region1 在 tikv1 tikv2 tikv3
region2 在 tikv2 tikv3 tikv4
region3 在 tikv1 tikv3 tikv4
两种情况:
第一种分页查询:order by id limit 50,200 也就是50-250的数据
第二种分页查询: limit 50,200 没有排序
这执行流程是那样的啊,有参考文档吗
先感谢大佬了
第一种分页查询:order by id limit 50,200 也就是50-250的数据—这种是把所有tikv节点符合条件的数据拉回到tidb-server然后进行重排序,然后取符合条件的数据,可以保证offset的连续性
第二种分页查询: limit 50,200 没有排序—这种是不保证offset连续性的,也就是你每次查询都可能不一样的,哪个tikv返回快算谁的
2 个赞
乡在人间
(Ti D Ber Ki Nyc B Fs)
2025 年3 月 18 日 01:46
3
第一种分页查询:order by id limit 50,200,这个算子下推至tikv节点,根据条件,应该每个tikv节点也只需要返回前200行(这样进一步减少资源消耗),然后汇总至tidb server在进行刷选符合条件的就可以了。
1 个赞
Kongdom
(Kongdom)
2025 年3 月 20 日 08:23
5
tidb菜鸟一只:
每次查询都可能不一样的
应该是默认按主键排序吧,刚验证了一下,每次返回结果是一样的。也可能是样本太小的缘故。
tidb不保证返回顺序的,没有order by的话
1 个赞