TiKV学习5:TiDB SQL执行流程

news2024/11/26 3:29:19

目录

1. DML语句读流程概要

2. DML语句写流程概要

3. DDL 流程概要

4. SQL的Parse和Compile

5. 读取的执行

6. 写入的执行

7. DDL的执行

8. 小结


1. DML语句读流程概要

TiDB Server接收sql并处理,TiKV负责持久化数据,PD提供TSO和Region的数据字典信息

  • Protocol Layer:接收sql
  • PD Client到PD节点获取STO
  • Parse:词法解析、语法解析,将sql解析为AST语法树
  • Compile:区分点查和非点查,生成执行计划
  • Execute:拿着执行计划问PD在哪个TiKV Region读取想要的数据
  • 读取数据后交由Execute,返回给用户

2. DML语句写流程概要

  • Protocol Layer:接收sql
  • PD Client到PD节点获取STO
  • Parse:词法解析、语法解析,将sql解析为AST语法树
  • Compile:区分点查和非点查,生成执行计划
  • Execute:拿着执行计划问PD在哪个TiKV Region读取想要的数据
  • 读出来的数据放在memBuffer中进行修改,当用户发起commit的时候,进入两阶段提交
    • 第一阶段:prewrite,将内存中修改的信息和锁信息写入TiKV
    • 第二阶段:commit,写提交信息,将锁清理掉,获取结束TSO
  • 二阶段提交完成后,返回给用户提交成功数据不会丢了

3. DDL 流程概要

修改表定义、加索引等等都是DDL

  • 用户发出DDL语句
  • TIDB Server中的start job接收DDL语句
  • 将DDL放入TiKV中的job queue中(添加索引是放在 add index queue中)
  • TIDB Server谁是owner角色谁就执行DDL,owner中的worker去job queue(先进先出)中取DDL去执行
  • 执行完后把该job放入history queue中

4. SQL的Parse和Compile

  • Protocol Layer:接收sql
  • PD Client:去PD异步获取TSO
  • Parse:词法分析LEX,语法分析YACC,将sql转化成AST语法树
  • compile:
    • preprocess:检测sql合法性,名称是否正确,一些绑定信息等,判断是否是点查
    • 如果是点查(PointGet)的话直接就执行,节约了优化的工作
    • 如果是非点查的话,进入优化流程:
      • ①逻辑优化:关系代数、等价交换等一些规则将sql语句进行一些逻辑的变换,比如把外连接转化为内连接等等
      • ②物理优化:基于逻辑优化的结果结合相关的统计信息(行数、列的选择度、直方图等等)选择最优的算子,如何去TiKV中好的效率最高的取得数据
  • 编译完成后生成物理执行计划,拿着物理执行计划去TiKV中取数据

5. 读取的执行

当Executor收到执行计划后,Executor做两件事:

  • ①从information schema(缓存中,是最新的)中获得元数据(表名、列名等)
  • ②要修改的数据对应Key在所在的Region以及Region所在的TiKV,第一次会从PD中获取Region的位置,然后缓存在TiKV Client中的region Cache中,如果region Cache的信息过期了(back off),访问的时候会再次从PD中读取最新的信息到region Cache中

经过了以上过程,获得了表的元数据以及Key所在的Region和TiKV

Executor读取数据:

  • 如果是点查,KV模块就通过TiKV Client直接读取数据
  • 如果是非点查(复杂sql语句)DistSQl模块会将复杂的sql转换成多条对单表的查询语句,然后通过TiKV Client去TiKV取数据

TiKV接收到请求后首先会构建一个快照snapshot

点查和非点查都会进入UnifyRead Pool线程池,按照优先级执行查询,到RocksDB kv去读取数据

一部分过滤和聚合在TiKV中做,叫coptask,还有一部分在TiDB中(比如三张表连接,三张表散落在3个TiKV中,先把数据读到TiDB内存中再做表连接)叫root task

6. 写入的执行

        前面的读取流程是一样的,从读出数据开始,把需要修改的数据读到memBuffer中,用户commit后进入两阶段提交

        第一阶段:prewrite,Transaction从memBuffer中一行一行读取数据修改数据,通过KV和TiKV Client写到TiKV中并加锁

  • 写请求发送给Scheduler模块(协调事务并发写入的冲突,并将收到的修改操作向下写入),同时写入同一个Key的时候,谁持有Latch谁就可以写数据,其他的需等待Latch
  • 然后到RaftStore,将写请求转换为raft log,此时会在本地RocksDB raft持久化raft log,并把raft log发送给其他节点,然后Apply模块把读取rocksdb raft log应用到rocksdb kv中持久化存储,然后反馈写入成功。

        第二阶段:commit,获取结束TSO,写提交信息,清理锁

7. DDL的执行

  • Protocol Layer接收DDL,经过Parse和Compile,到达start job
  • start job会检查自己所在的TiDB Server是不是owner
  • 如果是owner则直接给workers执行,如果不是就会把DDL做成一个job放到TiKV的job queue中持久化(添加索引放在add index queue中)
  • Schema load:将最新的表的元信息载入到TiDB Server
  • owner中的worker会定期去查看job queue,当job queue中有job的时候workers就根据元信息执行DDL(Job queue 和 add index queue 中的语句可以并行执行)
  • 执行完毕后把job放在history queue中

owner节点是轮询的,由PD节点控制

8. 小结

  • DML 语句读写流程
  • DDL语句的执行流程

来自TiDB官方资料 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1717821.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

推荐系统三十六式学习笔记:02|个性化推荐系统有哪些绕不开的经典问题?

目录 推荐系统的问题模式评分预测行为预测 几个常见顽疾1、冷启动问题2、探索与利用问题安全问题 总结 推荐系统的问题模式 推荐系统的使命是为用户和物品建立连接,建立的方式是提前找出哪些隐藏的连接呈现给用户,这是一个预测问题;所以推荐…

Echarts 实现自定义曲线的弧度

文章目录 问题分析问题 分析 在 ECharts 中,可以通过控制数据点的位置来调整曲线的弧度。具体来说,可以通过设置数据项的控制点来调整曲线的形状。ECharts 中的折线图和曲线图都是通过控制点来绘制曲线的,可以通过设置数据项的控制点来调整曲线的弧度。 以下是一个简单的示…

EG2106 原装正品 贴片SOP-8 大功率MOS管栅极驱动芯片耐压600V

EG2106 在电机控制中的应用非常广泛,下面是一些典型的应用案例: 1. 无刷直流电机(BLDC)控制:EG2106 可以用于驱动无刷直流电机的功率MOSFET或IGBT。在无刷电机控制器中,通常会用到H桥电路来控制电机的正…

你认识nginx吗,nginx是做什么的,nginx可以做什么 --2)nginx配置

hello大家今天教大家如何用nginx实验tomcat的负载均衡,同理其他的也可以,如httpd等 首先需要准备一个nginx和tomcat包,这里用到的是版本号为 然后需要准备最少三台linux虚拟机,然后我们开始吧 1.安装tomcat 解包 tar zxf /mnt/…

图数据集的加载

原文参考官方文档: https://pytorch-geometric.readthedocs.io/en/latest/modules/loader.html torch_geometric.loader 库中, 该库中包含了多种 图数据集的 加载方式, 这里主要介绍 DenseDataLoader and DataLoader 这两者之间的区别&#…

2024最新群智能优化算法:人工原生动物优化器(Artificial Protozoa Optimizer ,APO))求解23个函数,MATLAB代码

一、人工原生动物优化器 人工原生动物优化器(Artificial Protozoa Optimizer ,APO)由Xiaopeng Wang等人于2024年提出,其灵感来自自然界中的原生动物。APO 模拟了原生动物的觅食、休眠和繁殖行为。 参考文献 [1]Wang X, Snšel V…

【强化学习】DPO(Direct Preference Optimization)算法学习笔记

【强化学习】DPO(Direct Preference Optimization)算法学习笔记 RLHF与DPO的关系KL散度Bradley-Terry模型DPO算法流程参考文献 RLHF与DPO的关系 DPO(Direct Preference Optimization)和RLHF(Reinforcement Learning f…

哪款桌面便签软件安全好用?2024好用便签app推荐

桌面便签软件已经成为许多人日常生活和工作中不可或缺的工具,它们实用、灵活,能够帮助我们快速记录重要信息,提醒任务事项。随着科技的进步,市面上的便签软件层出不穷,功能也越发强大和实用。在众多的便签软件中&#…

5、css3 自动动画渐变背景

效果例图&#xff1a;&#xff08;因gif图片太大&#xff0c;而csdn只能上传小于5m图片&#xff0c;所以无法上传&#xff09; 1、首先上传html代码&#xff1a; <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8">&l…

TDesign环境搭建-后台模板的安装和使用-构建web管理端后台系统

TDesign环境搭建-后台模板的安装和使用-构建web管理端后台系统 一、安装Nodejs 下载&#xff1a;nodejs 注意&#xff0c;目前前端代码使用的vue3做为脚手架进行开发&#xff0c;需要强制依赖node版本为16及以上 二、模板安装 2.1 安装脚手架&#xff1a;cli nodejs安装好之…

基于51单片机多功能防盗报警proteus仿真( proteus仿真+程序+设计报告+原理图+讲解视频)

基于51单片机多功能防盗报警系统 1. 主要功能&#xff1a;2. 讲解视频&#xff1a;3. 仿真4. 程序代码5. 设计报告6. 原理图7. 设计资料内容清单&&下载链接 基于51单片机多功能防盗报警系统( proteus仿真程序设计报告原理图讲解视频&#xff09; 仿真图proteus8.9及以上…

Linux下的Git应用

1、卸载 2、安装 3、创建并初始化 4、配置 (附加删除语句) 5、查看(tree .git/) 6、增加和提交

关于d3js生成节点画布的个人笔记

实现功能 根据鼠标位置生成节点根据节点位置通过鼠标拖拽生成连线实现自定义线段颜色功能删除节点以及连线功能实现单个节点拖动功能实现整条线路的拖动功能 界面如下&#xff1a; 主要模块介绍 绘制连线 const line svg.selectAll(".line").data(links, d >…

BUUCTF Crypto RSA详解《1~32》刷题记录

文章目录 一、Crypto1、 一眼就解密2、MD53、Url编码4、看我回旋踢5、摩丝6、password7、变异凯撒8、Quoted-printable9、篱笆墙的影子10、Rabbit11、RSA12、丢失的MD513、Alice与Bob14、大帝的密码武器15、rsarsa16、Windows系统密码17、信息化时代的步伐18、凯撒&#xff1f;…

加密金字塔的秘密:「高层」的回报你无法想象

原文标题&#xff1a;《The Secrets of the Crypto Pyramid!》 撰文&#xff1a;DUO NINE⚡YCC 编译&#xff1a;Chris&#xff0c;Techub News 本文来源香港Web3科技媒体&#xff1a;Techub News 意外成为一名 KOL 让我有机会深入了解这个领域的运作机制。在这个行业的幕后…

【xilinx】vivado中的xpm_cdc_gray.tcl的用途

背景 【Xilinx】vivado methodology检查中出现的critical Warning-CSDN博客 接上篇文章&#xff0c;在vivado进行 methodology检查时出现了严重警告&#xff0c;顺着指示查到如下一些问题 TIMING #1 Warning An asynchronous set_clock_groups or a set_false path (see con…

【Python】解决由于PYTHONPATH配置错误导致的ModuleNotFoundError: No module named ‘xxx‘错误

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

智慧楼宇:城市生活的新篇章

在城市的喧嚣与繁华中&#xff0c;楼宇不仅是我们工作与生活的场所&#xff0c;更是智慧科技发展的前沿阵地。当传统的建筑遇上智慧的火花&#xff0c;便诞生了令人瞩目的智慧楼宇。 山海鲸可视化搭建的智慧楼宇数字孪生系统 一、智慧楼宇&#xff0c;定义未来生活 智慧楼宇不…

利用WMI横向移动

一. WMI介绍和使用 1. WMI介绍 WMI是Windows在Powershell还未发布前&#xff0c;微软用来管理Windows系统的重要数据库工具&#xff0c;WMI本身的组织架构是一个数据库架构&#xff0c;WMI 服务使用 DCOM或 WinRM 协议, 在使用 wmiexec 进行横向移动时&#xff0c;windows 操…

生活杂货品牌首合作!The Green Party与数图共同探索品类空间管理全新策略!

数图服务业态再扩展&#xff0c;生活杂货品牌首合作&#xff0c;近日&#xff0c;数图与国内知名品牌The Green Party&#xff08;绿光派对&#xff09;展开合作&#xff0c;双方本着创新共赢的原则&#xff0c;携手共进&#xff0c;共同探索和实践品类空间管理领域的全新路线&…