MPP 架构介绍:

如图,TiDB Server 作为协调者,首先 TiDB Server 会把每个 TiFlash 拥有的 region 会在 TiFlash 上做交换,让表连接在一个 TiFlash 上。另外 TiFlash 会作为计算节点,每个 TiFlash 都负责数据交换,表连接,聚合等等。
每个 TiFlash 在 MPP 架构里面称为一个 MPP worker。
MPP 的特点:
- 适合大量的 join 聚合查询
- 所有 MPP 计算是在内存中执行的,数据不落地。
- 只支持等值连接,不支持不等值连接(这意味着有一些 sql 用不了 MPP,这时候可以使用参数:Enforce_mpp 强制使用 MPP,但不支持等值连接就是不支持,执行后会警告)。
MPP 的执行流程:
首先,在这个 SQL 中,有一个表连接,两个过滤条件,一个聚合条件 。
TiFlash 在存储数据的时候会把数据分别存储在不同的 TiFlash 上,这个 SQL 的执行流程是:
1. 在每个 TiFlash 中过滤出 order 表里面 dic 列的前三个字母是 7c0 的数据放到内存中。把 product 表里面 pct_date 列大于‘2021-09-30’ 的数据放到内存中(并行执行)

2. 数据交换(减少网络交换),让表连接在本节点执行,对每一张表的连接项(pid)取一个 hash 函数,如取模。将数据根据 hash 值 进行数据交换,让 hash 值相同的数据在一个节点上。

3. 对 group by 进行提速,也是进行数据交换,对 state 取 hash 函数,把 hash 函数相等的放在一个节点。

4. 把 TiFlash 的数据返回到 TiDB Server

总结:TiDB 的 MPP 架构充分利用了 TiFlash 并行计算的功能, 当一个复杂的 SQL 语句过来的时候(能够使用 MPP),先利用表连接的条件把连接条件 Hash 值相同的数据放到一个节点上,防止网络交换严重,处理了过滤条件后,如有聚合条件,再利用聚合条件的字段进行数据交换,把聚合条件字段 hash 值相同的数据放到同一个数据节点中,最后每个 TiFlash 把计算好的数据返回给 TiDB Server。
文章转载自kk的DBA随笔,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
国产数据库需要扩大场景覆盖面才能在竞争中更有优势
白鳝的洞穴
472次阅读
2025-04-14 09:40:20
TiDB 社区第四届专栏征文大赛联合墨天轮火热开启!TiDB 业务场景实战、运维开发攻略两大赛道,重磅礼品等你来挑战!
墨天轮编辑部
241次阅读
2025-04-15 17:01:41
从Oracle和TiDB的HTAP说起
薛晓刚
91次阅读
2025-04-07 19:09:00
ProtonBase 与您相约 QCon 北京 2025
ProtonBase
80次阅读
2025-04-01 10:19:04
国产数据库再获资本赋能,「九有数据库」完成A轮融资
严少安
55次阅读
2025-03-31 13:00:54
什么是 StarRocks?核心优势与适用场景解析
镜舟科技
48次阅读
2025-04-02 23:12:24
下一代数据架构全景:云原生实践、行业解法与 AI 底座 | Databend Meetup 成都站回顾
Databend
41次阅读
2025-04-11 16:31:01
Dify 基于 TiDB 的数据架构重构实践
PingCAP
41次阅读
2025-04-10 11:52:56
TiDB 可观测性解读系列:索引与算子执行性能优化实践
TiDB Club
40次阅读
2025-04-01 18:30:31
4.12 TiDB 社区活动@南京丨传统技术栈替换和 AI 浪潮正当时,面向未来的国产数据库如何选择?
PingCAP
37次阅读
2025-03-31 10:00:52