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

相关推荐
r i c k4 小时前
数据库系统学习笔记
数据库·笔记·学习
野犬寒鸦4 小时前
从零起步学习JVM || 第一章:类加载器与双亲委派机制模型详解
java·jvm·数据库·后端·学习
IvorySQL5 小时前
PostgreSQL 分区表的 ALTER TABLE 语句执行机制解析
数据库·postgresql·开源
·云扬·5 小时前
MySQL 8.0 Redo Log 归档与禁用实战指南
android·数据库·mysql
IT邦德5 小时前
Oracle 26ai DataGuard 搭建(RAC到单机)
数据库·oracle
惊讶的猫6 小时前
redis分片集群
数据库·redis·缓存·分片集群·海量数据存储·高并发写
不爱缺氧i6 小时前
完全卸载MariaDB
数据库·mariadb
纤纡.6 小时前
Linux中SQL 从基础到进阶:五大分类详解与表结构操作(ALTER/DROP)全攻略
linux·数据库·sql
jiunian_cn6 小时前
【Redis】渐进式遍历
数据库·redis·缓存
橙露6 小时前
Spring Boot 核心原理:自动配置机制与自定义 Starter 开发
java·数据库·spring boot