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

全面理解MySQL架构

目录

    • 学前目标
    • 一条查询SQL是如何执行的
      • mysql组成架构
        • 客户端
        • 服务端
      • 完整执行流程
    • 一条更新SQL是如何执行的

学前目标

掌握 MySQL 整体架构划分,清晰区分 Server 层和存储引擎层的功能与核心组件;
理解一条 SQL 查询 / 更新语句的完整执行流程;
掌握 MySQL 中核心日志(redo log、binlog、undo log)的特性、作用及协同工作机制;
理解 WAL 技术和两阶段提交的设计原因与实现逻辑;
理解 crash-safe、数据恢复的底层原理,为后续索引优化、事务调优、集群搭建打下基础;

一条查询SQL是如何执行的

mysql组成架构

客户端

主要用于连接 MYSQL 服务,向服务器端发送 SQL 语句,一般指的是常用的 SQL 连接客户端,如 DBeaver等。

服务端

server

  • 连接器
    与客户端进行连接,默认端口为3306,同时验证权限
  • 查询缓存
    8.0废除,5.7独有,有弊端
  • 分析器
    做语法与词法分析
  • 优化器
    执行计划生成,选索引
  • 执行器
    操作引擎,返回结果
  • 日志系统
    server层独有,记录数据库除了select 与 show 之外的增,删,改操作,用于数据复制与恢复

存储引擎

  • 负责数据存储与检索,插件式插入MYSQL中
  • 常见存储引擎包括MYISAM与INNODB,默认是INNODB,支持事务(独有的日志系统redo log与undo log,前者讲究持久性,用于数据的恢复,后者讲究原子性支持MVCC),行级锁定与外检约束

完整执行流程

①客户端发送SQL请求与连接器建立经典的TCP连接,此时连接器会管理连接并验证权限(用户名和密码),相关命令:

mysql-uroot-p123456

若客户端对服务器端在默认的8小时之内没有任何请求操作,连接会自动断开。

连接过程复杂,使用时尽量减少建立连接的动作,可以使用长连接,在JAVA中一般使用数据库连接池来处理数据库连接高并发操作。

长连接:多个请求复用一条连接,保持长时间不断开
短连接:执行很少查询后就断开,反反复复建立连接,耗资源

②查询缓存,5.7版本,数据库查询后会直接查询缓存(key+valuecunxhu ),缓存命中直接返回,没有命中,执行后面操作

8.0没有查询缓存,为啥?因为生产环境下对于修改多的系统,缓存命中低,只要有修改,缓存就失效,并且缓存需要锁开销也大。

③分析器,缓存未命中,分析器执行,进行词法与语法分析,词法分析判断SQL语句中提取的关键字(表结构)是否在information_schema存在;语法分析整条SQL是否符合规范。

④优化器对这条SQL查询多个查询方案选出最合适的,比如有多个索引就选出最合适的索引,多表关联查询选出最佳查询顺序。

select*fromt1joint2using(ID)wheret1.c=10andt2.d=20;

先匹配 t1.c=10的ID值,然后根据这个ID去 t2找出d=20的
先匹配 t2.d=20的ID值,然后根据这个ID去 t1找出c=10的
此时优化器会根据量表数据的多少来选择

⑤执行器执行前,判断当前用户是否有执行权限,因为执行前,可能会有一些第三方临时表也需要权限,有权限直接调用存储引擎返回结果。

一条更新SQL是如何执行的

更新语句与查询语句基本差不多,也是先查缓存,缓存没有就在磁盘查出要更新的行数据后,分析器分析是更新语句,优化器找出索引,执行器执行更新。

区别就是涉及到两种日志binlogredolog

http://www.jsqmd.com/news/501664/

相关文章:

  • 深度学习野外环境下野生动物检测(YOLOv12/v11/v8/v5模型+数据集)(源码+lw+部署文档+讲解等)
  • 国内代理IP地域选择与降低延迟方法
  • 北京对不同材质清洁专业的家政公司收费贵吗,推荐哪家 - mypinpai
  • 2026年阿里企业邮箱联系电话查询指南:官方服务渠道与套餐价格解析 - 品牌2026
  • 微信私域流量经营:构建“引流-沉淀-转化”闭环,赋能品牌长效增长
  • 【C++项目】从零实现高并发内存池(一):核心原理与设计思路
  • 在 SAP BTP 上选对开发武器:从 No/Low Code 到 Pro-Code 的项目落地指南
  • 079基于spring+boot的快递分拣管理系统-springboot+vue
  • COMSOL激光淬火相变模拟
  • 基于跨模态医学图像生成模型的早期肺癌风险评估研究-(resnet)-大数据深度学习算法毕设毕业设计项目-含完整论文源码
  • 2389168‑47‑0,18:1 PE-PEG2000-benzylguanine:脂质体靶向递送 SNAP‑抗体偶联专用辅料
  • 2026年低噪音运行风机排名,哪个品牌性价比高 - myqiye
  • 永磁同步电机的无传感器控制就像给电机装上隐形的眼睛,不需要物理编码器就能感知转子位置。今天咱们聊聊全速域控制的实战经验,重点看看不同转速区间怎么玩转算法
  • linux的指令(2)
  • 【力扣-239. 滑动窗口最大值[特殊字符]】Python笔记
  • 为内容账号寻找动漫头像,2026年我的素材站点筛选流程
  • 标准值与非标准值校准
  • C语言从入门到进阶——第15讲:深入理解指针(5)
  • day14还是先学ssm吧
  • 和我一起学软件架构:C编译流程
  • DC-DC锂电池充电电源电路设计。 包含锂电池充电电路,升压电路,电压均衡电路等电路组成
  • 软件测试入门封神指南!从理论到实战,核心知识点一篇全覆盖
  • 说说背胶绿色的一线品牌有哪些,广州地区好用又靠谱的推荐 - 工业设备
  • Phi-3 Forest Laboratory 工具链整合:Visual Studio Code高效开发插件推荐与配置
  • CPT306 Principles of Computer Games Design 电脑游戏设计原理 Pt.2 游戏引擎
  • LLM Agent 非法动作频发?Google DeepMind 用 AutoHarness 自动生成代码“安全带”,小模型直接反超大模型!
  • 工具管理化技术工具选型与集成评估
  • 2026年4月初级药师短期冲刺备考工具测评:精准押题才是提分关键! - 孤篇横绝
  • 嵌入式工程师必学(176):深入ADC
  • 协程学习笔记2