八股-Mysql 基础篇(1)

1. 执行一条SQL 查询语句,其中到底发生了什么?

1.1 Mysql的架构图

Mysql的架构主要分为两层,一层是Server层,另一层是存储引擎层

(1)Server层:主要负责建立连接、分析和执行sql语句。一般数据库的核心模块都在这里进行实现,包括连接器、查询缓存、解析器、预处理器、优化器和执行器。

(2)存储引擎层:主要负责数据的存储和提取。支持三种存储引擎,共用一个Server层,一般说的索引结构就是在存储引擎层实现的。

1.2 第一步 连接器

(1)与客户端通过TCP三次握手建立连接;

(2)校验用户名和密码,如果正确则赋予适当的权限;

Other:

Mysql的长连接和短连接:Mysql也有长连接和短连接的区别,长连接能够避免连接的频繁建立和断开,但是长连接建立会导致内存占用增多。因为Mysql使用内存管理连接对象,这些连接的对象只有在连接断开时才会进行释放。长连接如果累积过多的话,会导致资源受限无法及时释放。

1.3 第二步 查询缓存

建立连接之后,客户端向Mysql服务发送Sql语句,如果是查询语句,则其先会去查询缓存(Query Cache)中查找缓存数据,如果有的话直接返回,如果没有的话则继续下去执行。

在Mysql中将Server中的查询缓存进行移除,由于相对比较鸡肋

1.4 第三步 解析SQL

在正式执行语句的时候,Mysql中的解析器会对SQL语句进行解析。

(1)词法分析:根据输入的字符串识别出关键字和非关键字来

(2)语法分析:根据词法分析的结果,语法解析器根据语法规则判断是否合法并构建对应的SQL语法树

1.5 第四步 执行SQL

select 执行过程可以大致分为三个阶段,

(1)预处理阶段

1> 检查查询语句中的表或字段是否存在

2> 将 select中的 * 扩展为所有列

(2)优化阶段

1> 该阶段主要是确定好该查询语句的执行计划

(3)执行阶段

1> 根据查询计划进行执行,从存储引擎读取记录并返回给客户端


参考:

https://xiaolincoding.com/mysql/base/how_select.html#%E6%89%A7%E8%A1%8C%E5%99%A8

相关推荐
VALENIAN瓦伦尼安教学设备1 天前
镭射对心仪在联轴器找正作用
大数据·数据库·人工智能·嵌入式硬件
YIN_尹1 天前
【MySQL】增删查改的艺术——数据库CRUD完全指南(下)
android·数据库·mysql
云草桑1 天前
15分钟快速了解 Odoo
数据库·python·docker·postgresql·.net·odoo
m0_706653231 天前
Python入门:从零到一的第一个程序
jvm·数据库·python
zhengfei6111 天前
踪有趣的 Linux(和 UNIX)恶意软件。提交 PR
java·数据库·mysql
2301_765703141 天前
Python数据库操作:SQLAlchemy ORM指南
jvm·数据库·python
2301_790300961 天前
深入理解Python的if __name__ == ‘__main__‘
jvm·数据库·python
helloworldandy1 天前
趣味项目与综合实战
jvm·数据库·python
ctyshr1 天前
Django全栈开发入门:构建一个博客系统
jvm·数据库·python
一起养小猫1 天前
Flutter for OpenHarmony 实战:天气预报应用UI设计与主题切换
jvm·数据库·spring·flutter·ui·harmonyos