MySQL的架构以及SQL的执行过程

MySQL 主要分为 Server 层存储引擎层

Server 层:主要包括连接器、查询缓存、分析器、优化器、执行器等,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图,函数等,还有一个通用的日志模块 binlog 日志模块。

存储引擎:主要负责数据的存储和读取,采用可以替换的插件式架构,支持 InnoDB、MyISAM、Memory 等多个存储引擎,其中 InnoDB 引擎有自有的日志模块 redolog 模块。现在最常用的存储引擎是 InnoDB,它从 MySQL 5.5 版本开始就被当做默认存储引擎了。1.2 Server 层基本组件介绍

 

 

 

 

1. 连接器
主要负责用户登录数据库,进行用户的身份认证,包括校验账户密码,权限等操作

2. 查询缓存(MySQL 5.7默认关闭 MySQL 8.0 版本后移除)
主要用来缓存我们所执行的查询结果。如果打开,执行查询语句的时候,会优先查询缓存。但是一个表一旦执行过更新,这个表所有的缓存都会失效。不推荐使用,默认也是关闭的,甚至移除了。

3. 分析器
主要是用来分析 SQL 语句,依次进行词法分析和语法分析
词法分析: 提取关键字,select字段、 from表、 where条件等
语法分析:判断SQL是否符合 MySQL 的语法

4. 优化器
选定索引(如果有多个)和确定多表关联的顺序,选择优化器认为的最优方案来执行,(有时候不一定最优)

5. 执行器
根据优化器给的方案,先校验用户权限(如果没有指定表的权限,就会返回错误信息),然后调用存储引擎的接口,(这里还可能会有一些过滤操作等),返回执行的结果

 

常见的SQL语句执行过程

查询语句(DQL)的执行流程如下:连接器(=> 查询缓存) => 分析器 => 优化器 => 执行器(校验用户指定表的权限) => 引擎

更新语句(DML)的执行流程如下:连接器  => 分析器 => 执行器(校验用户指定表的权限) => 引擎 => redo log(prepare) => binlog => redo log(commit)

 

 

 

SQL(Structured Query Language):一种结构化的用于管理和操作关系型数据库的标准化语言,主要有如下四种 / 五种(4+TCL)

1. DDL(Data Definition Language)数据定义语言
语法固定,用来操作数据库和表
关键字:create、drop、alter等
2. DML (Data Manipulation Language) 数据操作语言
语法固定,用来增删改数据库表中的数据
关键字:insert、delete,、update等
3. DQL(Data Query Language)数据查询语言
语法非常多,用来查询数据库表中的数据
关键字: select、from、where等
4. DCL(Data Control Language) 数据控制语言
用来定义数据库的访问权限和安全级别和创建用户
关键字: GRANT、REVOKE
5. TCL(Transaction Control Language) 事务控制语言
用于控制数据库的事务操作
关键字: begin、commit、rollback等

 

 

 

 

 

参考

SQL语句在MySQL中的执行过程

 

posted @ 2024-04-17 09:50  坏男银  阅读(9)  评论(0编辑  收藏  举报