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。

相关推荐
哥哥还在IT中8 天前
MVCC 实现之探析
数据库·mysql·tidb
哥哥还在IT中10 天前
TiDB/MongoDB/Taosdb存储引擎概览
数据库·mongodb·tidb
Fireworkitte17 天前
TiDB 详解
tidb
青年夏日科技工作者17 天前
从 MySQL 迁移到 TiDB:使用 SQL-Replay 工具进行真实线上流量回放测试 SOP
sql·mysql·tidb
{⌐■_■}1 个月前
【软件工程】tob和toc含义理解
前端·数据库·mysql·golang·软件工程·tidb
Edingbrugh.南空1 个月前
Flink TiDB CDC 环境配置与验证
大数据·flink·tidb
奔跑的蜗牛AZ2 个月前
TiDB 字符串行转列与 JSON 数据查询优化知识笔记
笔记·json·tidb
莱茵不哈哈2 个月前
DB面试题
数据库·tidb·etcd
微风轻吟挽歌2 个月前
TIDB创建索引失败 mkdir /tmp/tidb/tmp_ddl-4000/1370: no such file or directory.
数据库·oracle·tidb
Lucifer三思而后行3 个月前
深入解析分布式数据库TiDB:原理、优化与架构实践
数据库·分布式·tidb