八股-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

相关推荐
Dxy12393102162 小时前
MySQL的GROUP_CONCAT函数详解
数据库·mysql
编啊编程啊程2 小时前
【029】智能停车计费系统
java·数据库·spring boot·spring·spring cloud·kafka
Leon-Ning Liu3 小时前
Oracle数据库常用视图:dba_datapump_jobs
数据库·oracle·dba
数据库生产实战3 小时前
Oracle 19C RAC下TRUNCATE TABLE的REUSE STORAGE选项作用和风险浅析!
数据库·oracle
小白银子4 小时前
零基础从头教学Linux(Day 60)
linux·数据库·mysql·oracle
瀚高PG实验室4 小时前
数据库安全配置指导
服务器·数据库·瀚高数据库
憋问我,我也不会4 小时前
MYSQL 命令
数据库·mysql
24K老游5 小时前
postgres15 flink cdc同步测试
数据库
无泡汽水5 小时前
MySQL入门练习50题
数据库·mysql