GBase 8c 学习笔记 010 —— GBase 8c 分布式执行计划

0    110    1

Tags:

👉 本文共约2250个字,系统预计阅读时间或需9分钟。

GBase 8c 学习笔记 010 —— GBase 8c 分布式执行计划

SQL执行流程

解析器

  • 词法分析: 从查询语句中识别出系统支持的关键字、标识符、操作符、终结符等。
  • 语法分析: 根据SQL语言的标准定义语法规则,使用词法分析中产生的词去匹配语法规则,生成对应的抽象语法树。
  • 语义分析: 对语法树进行有效性检查,检查语法树中对应的表、列、函数、表达式是否有对应的元数据,将抽象语法树转换为逻辑执行计划。

优化器

  • 基于代价的查询优化(Cost Based Optimization,CBO) :对SQL
    语句所待选执行路径进行代价估算,从中选择代价最低的执行路径作为最终的执行计划。
    基于机器学习的查询优化(AI Based Optimization,ABO) :收集执行计划的特征信息,借助机器学习模型获得经验信息,进而对执行计划进行调优,获得最优的执行计划。

Explain——执行计划

Explain 语法将显示 SQL 语句所引用的表会采用什么样的扫描方式,如:简单的顺序扫描、索引扫描等。如果引用了多个表,执行计划还会显示用到的 JOIN 算法。基本语法与常用参数:

分布式执行计划

分布式执行计划类型——LightProxy

LightProxy

  • 执行计划只涉及一个DN节点,直接将 sql 语句发送到 dn 执行
  • 单个DN即可完成结果的获取,常见于点查、精准查询场景。

GBase 8c 学习笔记 010 —— GBase 8c 分布式执行计划

分布式执行计划类型——FQS

FQS (Fast Query Shipping)

  • 计划可以涉及多个DN节点,但在执行过程中,DN节点之间无数据交互;
  • FQS 会对 sql 进行适当重写,通过remote query执行;

GBase 8c 学习笔记 010 —— GBase 8c 分布式执行计划

分布式执行计划类型——Stream

Stream

  • 由 cn 生成执行计划,将执行计划发送到 dn,dn 按照接收到的计划执行相应算子,cn 收集 dn 的执行结果,进行处理后做最后输出;

  • Stream 算子类型:

    gather、redistribute、broadcast

    本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!
    • gather :cn 将本算子以下的计划发送的其他节点,收集汇总dn的执行结果;

    • broadcast

    :执行broadcast时,dn将查询到的数据广播到所有其他dn节点,在执行过程中,拥有两种角色,consumer、producer,

    • consumer:接受producer发送的数据;

    • producer:新启动streamworker线程作为producer,将扫描到的所有数据,广播到所有consumer(本dn和其他dn);

    • redistribute :过程和broadcast类似,但producer在发送数据根据指定的key选择发送发送到哪个consumer;

    • 当 broadcast 与 redistribute 均能实现查询时,倾向于将小表做广播,大表做重分布。

例1:select连接条件为分布列和非分布列

  • 连接条件为t1.id1(分布列)与t2.id2(非分布列)时,将t2表数据按照id2在dn上做重分布。

GBase 8c 学习笔记 010 —— GBase 8c 分布式执行计划

例2:select连接条件为非分布列和非分布列

  • 当链接条件均为非分布列时,通过广播和重分布均能实现链接,表规模较小时,倾向于广播,规模较大时,倾向于重分布。

GBase 8c 学习笔记 010 —— GBase 8c 分布式执行计划

例3:update连接条件为分布列

  • update t1 时,连接条件为t1.id1(分布列)与t2.id1(分布列),不会进行重分布或广播。

GBase 8c 学习笔记 010 —— GBase 8c 分布式执行计划

例4:update连接条件为分布列与非分布列

  • update t1时,连接条件为t1.id2(非分布列)与t2.id1(分布列),更新的是t1表,不能广播或重分布t1表。

GBase 8c 学习笔记 010 —— GBase 8c 分布式执行计划

分布式执行执行类型——Remote query

Remote query

  • Remote query 计划将查询语句发送到 DN 节点,在 CN 收集执行结果;
  • 不支持 Stream 计划时,通过 Remote query 将数据收集到 CN,在 CN 完成相关操作;
  • update 带有 returning 语句,并存在两表连接,不支持 stream 计划,CN 通过 remote query 从 DN获取两表数据,在 CN 完成连接操作,根据连接结果构造最终 update 语句,通过remote query下发DN。

GBase 8c 学习笔记 010 —— GBase 8c 分布式执行计划

参考

https://www.modb.pro/topic/619301

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部