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

相关推荐
加农炮手Jinx几秒前
Flutter for OpenHarmony:postgrest 直接访问 PostgreSQL 数据库的 RESTful 客户端(Supabase 核心驱动) 深度解析与鸿蒙适配指南
数据库·flutter·华为·postgresql·restful·harmonyos·鸿蒙
xiaohe0731 分钟前
Spring Boot 各种事务操作实战(自动回滚、手动回滚、部分回滚)
java·数据库·spring boot
setmoon2141 小时前
使用Scikit-learn构建你的第一个机器学习模型
jvm·数据库·python
2401_833197731 小时前
为你的Python脚本添加图形界面(GUI)
jvm·数据库·python
执笔画情ora1 小时前
oracle数据库优化-表碎片优化性能。
数据库·oracle
givemeacar2 小时前
Spring Boot中集成MyBatis操作数据库详细教程
数据库·spring boot·mybatis
skiy2 小时前
MySQL Workbench菜单汉化为中文
android·数据库·mysql
IvorySQL2 小时前
PostgreSQL 技术日报 (3月24日)|当 MVCC 成本被重新审视
数据库·postgresql·开源
2401_895521342 小时前
PostgreSQL_安装部署
数据库·postgresql
创世宇图2 小时前
Alibaba Cloud Linux 安装生产环境-mysql
linux·mysql