当前位置: 首页 > news >正文

一条sql的执行流程

文章地址

https://blog.csdn.net/qq_43618881/article/details/118657040

连接器

请求先走到连接器,与客户端建立连接、获取权限、维持和管理连接

mysql缓存池

如果要查找的数据直接在mysql缓存池里面就直接返回数据

分析器

请求已经建立了连接,现在需要对请求的语法进行分析,生成一个语法树

如果语法不对在这里直接报错

优化器

在这里对你写的sql进行优化

比如说表连接查询的时候小表 left join 大表

最后生成执行计划

也就是explain出来的结果

执行器

随后将执行计划交给执行引擎进行操作,比如innodb存储引擎,mysql的存储引擎支持插件化

执行引擎

INNODB存储引擎,会对执行计划进行处理

INNODB缓存池

在INNODB里面也有缓存池,里面会有各种各样的脏页

INNODB流程

select

首先查看数据是否在缓存池当中,如果是的话直接对数据进行返回

如果不在缓存池当中从磁盘读取root 的下面的非聚簇索引页,根据slot,进行二分查找,最后按照偏移量找到对应的页表,如果下一个节点还是非聚簇节点,就重复这个步骤,如果不是非聚簇节点,就查找真正的数据

slot槽

slot槽在页头中,每个页都是有的

slot 记录了每一个页的偏移量,是一个数组的结构,可以支持二分查找

先从 B+Tree 的根开始,逐层检索,直到找到叶子节点,也就是找到对应的数据页为止,然后将数据页加载到内存中,页目录中的槽(slot)采用二分查找的方式先找到一个粗略的记录分组,最后在分组中通过链表遍历的方式查找到记录。

insert

先记录undo日志

修改buffer pool中的数据

        使用double write buffer 两次写进行持久化

        写redo log 

                redo log 根据设置的频率进行刷盘

                记录binlog

相关文章:

  • doc 和 docx 文件的区别
  • 基于YOLOv8的行人检测项目的实现
  • 2024 年 5 月区块链游戏研报:市值增长、玩家参与变迁、迷你游戏兴起
  • WPF界面设计
  • 夹层辊能否解决智能测径仪量程不足的问题?
  • Vulnhub-DC-3
  • MAC系统下Xcode连接iOS真机实现iOS App自动化测试(上)
  • 如何在 Windows 上安装 MySQL(保姆级教程2024版)
  • 404 页面代码
  • Spring系统学习 -Spring IOC 的XML管理Bean之类类型属性赋值、数组类型属性赋值、集合类属性赋值
  • PFA三颈平底烧瓶500ML四氟反应瓶透明可视耐酸碱腐蚀可定制
  • python游标卡尺什么梗
  • 【CT】LeetCode手撕—手撕快排
  • Hadoop 2.0:主流开源云架构(三)
  • MYSQL之MVCC多版本并发控制实现原理
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 【技术性】Search知识
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • Computed property XXX was assigned to but it has no setter
  • maya建模与骨骼动画快速实现人工鱼
  • mysql_config not found
  • spring cloud gateway 源码解析(4)跨域问题处理
  • tweak 支持第三方库
  • Vue全家桶实现一个Web App
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 坑!为什么View.startAnimation不起作用?
  • 学习HTTP相关知识笔记
  • 一个JAVA程序员成长之路分享
  • ​​​​​​​STM32通过SPI硬件读写W25Q64
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​如何在iOS手机上查看应用日志
  • # Redis 入门到精通(七)-- redis 删除策略
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • ## 1.3.Git命令
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (黑马C++)L06 重载与继承
  • (三)c52学习之旅-点亮LED灯
  • (微服务实战)预付卡平台支付交易系统卡充值业务流程设计
  • (一)VirtualBox安装增强功能
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • ****三次握手和四次挥手
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • .jks文件(JAVA KeyStore)
  • .net Application的目录
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .NET开源、简单、实用的数据库文档生成工具
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑