01 | 基础架构:一条SQL查询语句是如何执行的?

此系列文章为极客时间课程《MySQL 实战 45 讲》的学习笔记!

引言

在了解 SQL 查询语句如何执行之前,先了解下MySQL 的基本架构示意图。

MySQL 分为 Server 层和引擎层。

  • Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数。
  • 存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。MySQL5.5.5 版本默认是 InnoDB 引擎。

1.连接器

连接器负责客户端和服务端的连接建立、获取权限、维护和管理连接。

连接建立之后,若没有后续动作,则此连接出于空闲状态,通过show processlist命令查看,Command列为 Sleep 的表示当前连接空闲。

空闲连接超时时间由参数wait_timeout控制,默认是 8 小时

2.查询缓存

MySQL 服务器收到一个查询请求后,会先去缓存查询是否存在,缓存通过 Key-Value 的形式存储,key 为查询的 sql 语句,value 为查询结果。

但是缓存的设计非常鸡肋,因为查询缓存的失效非常频繁,只要有表的数据更新,那么这张表的查询缓存就会失效。

所以建议查询缓存按需使用,可以通过设置参数query_cache_type=DEMAND关闭缓存,当某个 sql 需要使用缓存时,可以显示的指定

sql 复制代码
mysql> select SQL_CACHE * from T where ID=10;

MySQL8中直接删除了缓存功能。

3.分析器(WHAT)

分析器主要做词法分析和语法分析。

  • 词法分析:分析 sql 中的字符串分别代表什么,比如通过 select 可知这是一个查询语句。
  • 语法分析:根据 MySQL 语法规则,判断 sql 是否符合语法。

4.优化器(HOW)

分析器分析 sql 语句是要做什么。优化器是分析 sql 如何做。

比如 sql 的执行有多种方案,优化器需要选择一种最优效率的执行方案,

5.执行器(DO)

接下来就进入的正式执行阶段。

  • 首先判断当前用户是否有表的执行权限。
  • 调用执行引擎的接口,查询数据,没查询一条判断是否满足条件,一直到表中最后一条数据。
  • 然后执行器将满足条件的数据返回给客户端。
相关推荐
仍然.1 小时前
Redis---缓存
数据库·redis·缓存
Aloudata1 小时前
LookML 语义模型 vs 企业级独立语义层:BI 建模语言能否承担企业语义底座?
数据库·人工智能·数据分析·数据资产·dataagent
细嗅蔷薇@1 小时前
排序和分⻚(order by 、limit)
数据库·oracle
wdfk_prog1 小时前
LWIP教程 09:从 `tcp_slowtmr()` 到 Fast Retransmit——TCP 超时重传与重复 ACK
服务器·网络·数据库·网络协议·tcp/ip
逸模1 小时前
BIM在连锁餐饮装修中的应用:不只是画三维图
大数据·数据库·人工智能·物联网·建模
梦想平凡1 小时前
棋牌游戏技术实战(五):从对局事件重新执行规则,核对棋盘和最终状态
数据库·游戏·oracle
白露与泡影2 小时前
Oracle AI Database 26ai RAC 部署步骤、关键命令与一键脚本
数据库·人工智能·oracle
天天喝旺仔2 小时前
MySQL 索引原理与慢查询优化实战:从 B+ 树到执行计划调优
数据库·sql·mysql·性能优化
专业程序开发源3 小时前
flask家电故障预测系统92491-计算机课程设计/毕业设计
vscode·python·sql·算法·flask·课程设计
liulilittle3 小时前
Linux 下 select 测试函数
linux·服务器·网络·数据库·c++·select·c