tidb merge join 和 hash join输出结果保证有序吗?

【 TiDB 使用环境】
v4.0.13

【概述】 场景 + 问题概述
问题: tidb 的 merge join 和 hash join 输出结果是保证否有序?

3 个赞

这个结果没办法保证了~

每个tikv 的算子下推 ,计算回来的结果,然后聚合到tidb 中 ( 毕竟不是一个节点,是多个节点)

3 个赞

这么说, index lookup join也不保序吗?

为了实现这一点,Outer Worker 通过管道将 task 发送给 Main Thread ,Main Thread 从管道中按序读取 task 并执行 Join 操作,
这样便可以实现在多线程并发执行的情况下的`保序需求`

链接:https://pingcap.com/zh/blog/tidb-source-code-reading-11

这是某个节点收到下推算子运行的描述了,
如果请求并发和返回的信息是无序(执行时间不一样),怎么保证顺序?
如果请求和返回需要保证有序性,怎么保证效率?

以上的场景,也可以考虑下,我感觉比较难平衡

3 个赞

研究一下merge join的方式,理论上merge join的返回是有序的。
参考:https://docs.pingcap.com/zh/tidb/stable/explain-joins/#merge-join

1 个赞

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