1.MySQL的架构
MySQL的架构包括客户端、服务端、存储引擎和文件系统,其架构如下图所示。
2.客户端通过TCP/IP连接到服务端
(1).连接过程
- 三次握手建立TCP连接
- 认证连接
- 认证通过之后,客户端开始与服务端之间交互
- 断开MySQL连接
- 四次挥手断开TCP连接
(2).三次握手建立TCP连接
- 第一次握手,服务端向客户端发送握手初始化包
- 第二次握手,客户端向服务端发送验证
- 第三次握手,服务端向客户端发送认证结果消息
3.SQL执行流程
(1).连接器
负责存储和管理客户端与服务端之间的连接,通过连接池实现。
(2).查询缓存
将之前执行过的语句会以KV形式换存在内存中,如果执行语句相同则直接从缓存中取。但是因为MySQL缓存时间非常短,更新快,缓存效果并不是很好,所以MySQL8.0废弃了查询缓存。
(3).解析器
负责解析请求的SQL,先做词法分析,识别SQL语句中的关键字,比如select或者update等,然后再做句法分析,判断SQL语句是否符合语法,比如子查询嵌套。
(4).优化器
优化器的主要工作是决定如何使用索引,然后将SQL语句转化为多个执行计划提交给执行器。
(5).执行器
执行器首先校验此用户对目标数据有无权限,然后会以行为粒度,调用存储引擎,执行SQL。
(6).存储引擎
将执行器的指令落在文件系统的数据文件上。
4.存储引擎
(1).作用
由执行器调用,将SQL指令落到文件系统的数据文件上。
(2).常用存储引擎
存储引擎 | 存储引擎 |
InnoDB | MySQL5.5之后默认存储引擎;支持事务和并发控制,行级锁以及外键等; |
MyISAM | MySQL5.5之前默认存储引擎;不支持事务,所有拥有较快的插入、查询速度; |