Mysql的大体结构

1 结构介绍

mysql 整体架构分为三层

mysql 整体架构

  1. 客户端:连接处理,权限认证、安全等
  2. server层:

连接器:管理链接 验证权限 连接器会直接链接到缓存以及分析器

查询缓存: 缓存中命中则直接返回(8.0之后废除)

分析器:缓存未能命中的时候 使用分析器 分析词法 语法

优化器: 执行计划生成 索引选择数据

执行器: 链接引擎操作数据

所有的跨存储引擎的功能也在这一层实现 : 存储过程、触发器、视图等

  1. 存储引擎:innodb,myisam

负责 MySQL 中的数据存储和提取,和 Linux 下的文件系统类似,每种存储引擎都 有其优势和劣势,中间的服务层通过 API 与存储引擎通信,这些 API接口 屏蔽不同存储引擎间的 差异

2 详细介绍

2.1 连接层

  1. 连接之后的用户密码校验
  2. 对于校验之后的连接进行线程分配管理

连接有长连接和短连接之分

  1. 对用户的校验,校验对于数据库表的操作权限

host:指定连接mysql的机器,eg:localhost/127.0.0.1 root 只能是本地连接 可用%泛操作

  1. 返回连接的id

show processlist 命令的输出结果显示了有哪些线程在运行,不仅可以查看当前所有的连接数,还可以查看当前的连接状态帮助识别出有问题的查询语句等。

show variables like "%max_connections%" 查询最大连接数

-1抛出异常

2.2 Sql层

sql语句接口接受到由连接层传递的sql语句

  1. 先判断sql语句类型

| 类型 | 说明 | 语句 |
| ------- | ------------ | -------------------- |
| DQL语句 | 数据查询语言 | select |
| DML语句 | 数据操作语言 | insert delete update |
| DDL语句 | 数据定义语言 | create drop alter |
| TCL语句 | 事务控制语言 | commit rollback |

  1. sql解析器根据查询的sql划分为多个token,根据token排列组合成解析树

2.3优化器

根据解析树选择合适的执行计划

  1. 获取表结构信息
  2. 根据解析树进行条件过滤
  3. 索引信息
  4. 执行计划

3 总结:SQL执行流程

mysql-sql执行流程

MySQL 整个查询执行过程,总的来说分为 5 个步骤 :

  1. 客户端向 MySQL 服务器发送一条查询请求
  2. 服务器首先检查查询缓存,如果命中缓存,则立刻返回存储在缓存中的结果,否则进入下一阶段
  3. 服务器进行 SQL解析、预处理、再由优化器生成对应的执行计划
  4. MySQL 根据执行计划,调用存储引擎的 API来执行查询
  5. 将结果返回给客户端,同时缓存查询结果
文章目录