1 Star 0 Fork 2

Emotion404 / JavaBooks

forked from 帝八哥 / JavaBooks 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
MySQL是如何执行一条SQL语句的.md 1.73 KB
一键复制 编辑 原始数据 按行查看 历史
DreamCats 提交于 2020-05-26 20:42 . MySQL是如何执行一条SQL语句的

MySQL是如何执行一条SQL的

先附上一张图:

执行过程图

MySQL内部可以分为服务层和存储引擎层两部分:

  1. 服务层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。
  2. 存储引擎层负责数据的存储和提取,其架构模式是插件式的,支持InnoDB、MyISAM、Memory等多个存储引擎。现在最常用的存储引擎是InnoDB,它从MySQL 5.5.5版本开始成为了默认的存储引擎。

Server层按顺序执行sql的步骤为: 客户端请求->连接器(验证用户身份,给予权限) -> 查询缓存(存在缓存则直接返回,不存在则执行后续操作)->分析器(对SQL进行词法分析和语法分析操作) -> 优化器(主要对执行的sql优化选择最优的执行方案方法) -> 执行器(执行时会先看用户是否有执行权限,有才去使用这个引擎提供的接口)->去引擎层获取数据返回(如果开启查询缓存则会缓存查询结果)

简单概括:

  • 连接器:管理连接、权限验证;
  • 查询缓存:命中缓存则直接返回结果;
  • 分析器:对SQL进行词法分析、语法分析;(判断查询的SQL字段是否存在也是在这步)
  • 优化器:执行计划生成、选择索引;
  • 执行器:操作引擎、返回结果;
  • 存储引擎:存储数据、提供读写接口。
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/Emotion404/JavaBooks.git
git@gitee.com:Emotion404/JavaBooks.git
Emotion404
JavaBooks
JavaBooks
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891