• MySQL 进阶 怎么去了解MySQL的架构原理


    前言

    在了解 MySQL 原理之前,对我而言 MySQL 就是一个黑盒子,我写的SQL 语句通过服务发送给 MySQL 数据库,然后数据库就执行 SQL 语句,返回一些查询结果或做一些操作。然后就没然后了。。。再深入一点,就是知道某些 SQL 的写法会降低数据库执行效率,也就是需要所谓的 SQL 优化。但是为什么会降低执行效率呢???所以有必要了解一下 MySQL 的原理。
    连接池

    正文

    SQL 语句要交给 MySQL 数据库执行,首先得跟数据库连接上吧,所以通常在服务中会加上 MySQL 的依赖包,也就是 MySQL 的驱动。也就是说我写的服务需要通过 MySQL 驱动与 MySQL 数据库建立连接。
      在这里插入图片描述

    连接建立后就可以通过网络发送 SQL 语句到 MySQL 数据库,执行完返回结果后,连接即被销毁。如此反复建立连接-销毁连接,使得系统对于连接的消耗极大,这时就需要一个连接池来管理数据库的连接,就跟线程池管理线程一样(本质上也是通过线程建立的连接)。那我的服务中有连接池来建立连接了,数据库中应该也有对应的连接池,以保证数据的并发性能。
    在这里插入图片描述

    所以 MySQL 的架构第一环就是数据库连接池

    读取SQL

    在这里插入图片描述

    SQL 语句通过数据库连接发送到数据库,这时数据库就需要处理这条 SQL 了,那么谁来处理?当然是线程呐,现在计算机运行程序都是基于进程-线程来执行的。要处理某个程序动作当然要由某一个线程来处理,所以此时数据库会分配一个线程去监听连接池收到的 SQL,并从连接中读取 SQL 以便执行下一步操作。

    SQL 接口

    在这里插入图片描述

    从连接读取到 SQL 后会把 SQL 交给 SQL 接口(SQL Interface)做进一步处理。

    SQL 解析器

    在这里插入图片描述

    SQL 接口首先会将收到的 SQL 语句交给 SQL 解析器,把类似 “Select name from user where id = 1” 这种语义化的 SQL 语句解析为解析树,期间会通过 SQL 语法和规则验证 SQL 的合法性。

    SQL 优化器

    在这里插入图片描述

    随后解析器预处理过的 SQL 交给优化器生成查询计划,优化器会通过一些策略选择最优的查询计划,然后把查询计划交给执行器执行。

    SQL 执行器

    执行器会调用相应的存储引擎查询接口,执行查询计划。
      在这里插入图片描述

    存储引擎

    存储引擎才会真正执行查询计划。
      在这里插入图片描述

    总结

    从业务 SQL 到 MySQL 真正执行的流程分析了整个 MySQL 数据库的架构。就是通过数据库连接池建立连接发送 SQL 语句到 MySQL 数据库,相应的 MySQL 数据库也会有一个连接池来保持与各个系统的数据库连接。然后 MySQL 数据库系统会有一个线程来保持监听和读取来自连接池连接发送过来的 SQL 语句,并把 SQL 语句交给 SQL 接口。SQL 接口会把 SQL 语句通过解析器解析、优化器优化查询、执行器调用存储引擎、存储引擎执行查询计划来从缓存或者磁盘中查询或执行相应的 SQL。

  • 相关阅读:
    史上最简SLAM零基础解读(8.1) - 旋转矩阵、旋转向量、欧拉角推导与相互转换
    34. Fabric2.2 证书目录里各文件作用
    笔记本电脑升级实战手册[1]:开始之前的准备与清单
    Dart基础知识
    数字化采购:企企通、商越同行不同路
    Unity 编辑器资源导入处理函数 OnPostprocessTexture :深入解析与实用案例
    PyQt5使用sqlite3库存用户数据
    使用MySQL
    Golang 自定义时间结构体支持Json&Gorm
    Redis和MySQL如何保持数据一致性
  • 原文地址:https://blog.csdn.net/weixin_44994494/article/details/128016767