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

Mysql快速学习——《一》: Mysql的基础架构

了解mysql的基础架构, 理解大概的实现思想, 更有利与我们知之所以然, 是我们学习mysql起来思路更清晰, 效率更高.

思维导图: mysql

基础架构

mysql基础架构.png
  • 1. 连接器
    Mysql作为服务器,一个客户端的Sql连接过来就需要分配一个线程进行处理,这个线程会专门负责监听请求并读取数据。
    这部分的线程和连接管理都是有一个连接器,专门负责跟客户端建立连接、权限认证、维持和管理连接。

  • 2. 解析器
    SQL解析,就是按照SQL语法,把我们编写的SQL语句进行词法分析,理解这个SQL需要做什么事情.

比如如下SQL语句,就会被解析器给拆成三步逻辑:

select name, age, birthday from user where userId = '007';
  • 查询user表;
  • 寻找到userId=007的那条数据;
  • 将数据中的name、age、country字段信息提取出来;
  • 3. 优化器
    MySQL的优化器主要是将SQL经过语法解析/词法解析后得到的语法树,通过MySQL的数据字典和统计信息的内容,经过一系列运算,从而得出一个执行计划树的构成。之后MySQL按照执行树的要求,计算得出结果。

优化器的输入是一个语法树,输出是一个执行树(也称为执行计划),SQL优化器的具体模块参考如下图:


mysql优化器.jpg
  • 准备阶段
    -- 名称识别:主要包括将找到并补全对应语句的表名,库名等;
    -- 语义检查:通过数据字典如果找不到对应的表名,则直接返回报错;
    -- 初级语义变换:主要是根据语义规则,把一些外连接直接转成内连接,子查询EXIST转成IN,然后IN再转成SEMIJOIN等功能。

  • 逻辑变换

    逻辑变换

    -- 否定消除:对于多个表达式的和取或析取范式前面有否定的情况,应将关系条件分解成一个一个的,将外面的NOT消除;
    -- 等值常量传递:利用了等值关系的传递特性,为了能够尽早执行下推运算(后面会讲到);
    -- 常量表达式计算:对于能够立刻计算出结果的表达式,直接计算结果,并将结果与其他条件尽量提前化简。

  • 代价优化准备
    基于代价的优化主要是用来确定对于每个表,根据条件是否应用索引应用哪个索引, 确定多表连接的顺序等问题。为了能够进行代价优化,需要尝试各种可能的方法,从而找到一个代价最小的方法。为了能够比较,就需要给定义一个量化指标。
    基于代价的优化,主要是为了确定采用如下哪一种方法(如果当前表存在该功能的条件下):
    -- 采用哪种索引: 一个表可能有主键,也可能有外键,需要根据条件确定使用哪个索引;
    -- 确定JOIN顺序:不同的JOIN顺序对性能影响极大;
    -- 确定子查询的执行策略: MySQL执行子查询有相当多的方式, 具体涉及到代价模型, 代价量化方法. 这里先埋个坑, 后续写个文章展开.

  • 4. 执行器
    这一步就是根据上一步骤优化器生成的SQL执行方案,去调用存储引擎的接口(InnoDB、mysam)完成SQL语句的执行计划,这个SQL引擎操作的有可能是内存数据,也有可能是磁盘文件。
    补充:MySQL 8.0 版本直接将查询缓存的整块功能删掉了,日常也不建议开启使用。
文章标签: #MYSQL基础架构 #MYSQL

(注:部分内容来源于网路和一些学习资料,并非本人原著)

最后编辑于:2025-02-24 21:41:30


喜欢的朋友记得点赞、收藏、关注哦!!!

相关文章:

  • Uniapp实现多种文件类型上传
  • 缓存之美:Guava Cache 相比于 Caffeine 差在哪里?
  • 文件管理器显示文件的方式是图标还是小图标还是列表需要看ListView_IsIconView宏定义
  • Git 的基本概念和使用方式。
  • 案例分析:安防5G低代码开发网关如何提升城市监控效率
  • 数据库核心-redo、undo
  • 关于ModbusTCP/RTU协议转Ethernet/IP(CIP)协议的方案
  • 【微信小程序 onTabItemTap:精准监听 TabBar 点击事件】
  • 解锁 AI 量化新境界:Qbot 携手 iTick
  • VSCode快捷键整理
  • 【WPF】在System.Drawing.Rectangle中限制鼠标保持在Rectangle中移动?
  • Uniapp组件 Textarea 字数统计和限制
  • DeepSeekR1之四_在RAGFlow中配置DeepSeekR1模型
  • 【春招笔试真题】饿了么2025.03.07-开发岗真题
  • mac 被禁用docker ui后,如何使用lima虚拟机启动docker
  • 贪心算法--
  • C语言练习题--洛谷P生日*****(学会了新的思路)
  • leetcode日记(90)二叉树的锯齿形层序遍历
  • 【已解决】最新 Android Studio(2024.3.1版本)下载安装配置 图文超详细教程 手把手教你 小白
  • 文件操作详解(万字长文)
  • 上海车展侧记|中国汽车产业的韧性从何而来
  • 心期末后有人传——《钱谦益年谱长编》在钱氏故里首发
  • 2025五一档电影票房破7亿
  • 让党的理论“飞入寻常百姓家”,他如何做到有新意?
  • 文旅局局长回应游客住家里:“作为一个宣恩市民我也会这么做”
  • 海港通报颜骏凌伤停两至三周,国足面临门将伤病危机