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。

相关推荐
小马爱打代码3 天前
避坑指南:MySQL 迁移到 TiDB
数据库·mysql·tidb
5***79004 天前
JavaScript生成器函数
hive·tidb·consul
北i15 天前
TiDB 关联子查询去关联优化实战案例与原理深度解析
java·数据库·sql·tidb
Lucifer三思而后行15 天前
使用 BR 备份 TiDB 到 AWS S3 存储
数据库·tidb·aws
Lucifer三思而后行18 天前
使用 BR 备份 TiDB 到阿里云 OSS 存储
阿里云·云计算·tidb
落叶的悲哀19 天前
mysql tidb like查询有换行符内容问题解决
数据库·mysql·tidb
得物技术20 天前
得物TiDB升级实践
数据库·性能优化·tidb
言之。20 天前
【数据库】TiDB 技术选型与架构分析报告
数据库·架构·tidb
熙客22 天前
TiDB:分布式关系型数据库
java·数据库·分布式·tidb