1. 建立连接
mysql是基于TCP协议进行传输的,连接的过程需要经过TCP三次握手,建立连接后, 连接器要开始校验用户名和密码,校验通过后, 连接器会获取该用户的权限, 进行保存, 基于此时获取到的用户权限进行后续数据的读取或更改.
2. 查询缓存
连接完成后, 客户端向mysql服务端发送sql语句,如果是select 语句, 那么先查询缓存(MySQL 8.0后则没有该步骤了 ).
3. sql解析
校验输入的sql语法有没有错误(表或者字段不在此次校验范围); 如果校验通过, 那么则构建sql语法树, 否则就报错;
4. 执行sql
1)预处理阶段
检查sql语句中的表或者字段是否存在;并把*符号, 扩展为表的所有字段等
2)优化阶段
确定语句的执行方案: 如考虑最小成本的索引.
3)执行阶段
根据上一步骤确定的执行方案执行不同的步骤. (如主键索引查询, 全表扫描, 索引下推).从存储引擎中读取记录,返回给客户端.