TiDB 的MPP架构概述

MPP架构介绍:

如图,TiDB Server 作为协调者,首先 TiDB Server 会把每个TiFlash 拥有的region 会在TiFlash上做交换,让表连接在一个TiFlash上。另外 TiFlash会作为计算节点,每个TiFlash都负责数据交换,表连接,聚合等等。

每个TiFlash在MPP架构里面称为一个MPP worker。

MPP的特点:

1.适合大量的join聚合查询

2.所有MPP计算是在内存中执行的,数据不落地。

3.只支持等值连接,不支持不等值连接(这意味着有一些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。

相关推荐
Edingbrugh.南空3 天前
Flink TiDB CDC 环境配置与验证
大数据·flink·tidb
奔跑的蜗牛AZ13 天前
TiDB 字符串行转列与 JSON 数据查询优化知识笔记
笔记·json·tidb
莱茵不哈哈16 天前
DB面试题
数据库·tidb·etcd
微风轻吟挽歌1 个月前
TIDB创建索引失败 mkdir /tmp/tidb/tmp_ddl-4000/1370: no such file or directory.
数据库·oracle·tidb
Lucifer三思而后行1 个月前
深入解析分布式数据库TiDB:原理、优化与架构实践
数据库·分布式·tidb
TiDB 社区干货传送门2 个月前
从开发者角度看数据库架构进化史:JDBC - 中间件 - TiDB
数据库·oracle·中间件·tidb·数据库架构
TiDB 社区干货传送门2 个月前
从40秒到11毫秒:TiDB环境下一次SQL深潜优化实战
数据库·sql·tidb
赵渝强老师2 个月前
【赵渝强老师】TiDB SQL层的工作机制
数据库·sql·tidb
观测云2 个月前
TiDB 可观测性最佳实践
tidb
赵渝强老师2 个月前
【赵渝强老师】使用TiDB的审计日志
数据库·tidb