select
- 取得连接,会使用到 mysql 中的连接器
- 还会经历 tcp 三次握手,因为 mysql 是基于 tcp 进行通信的
- 这个过程会校验用户名和密码是否正确
- 校验用户权限
- 查询缓存,key 为 sql 语句,value 为 sql 查询结果,不过在 mysql8.0 后被删掉了
- 更新比较频繁的表缓存命中率很低,因为只要一个表被更新了,该表的缓存就会被删掉,维护起来就很麻烦
- 分析器,分为词法分析和语法分析。词法分析就是提取 sql 语句关键字,语法分析就是校验 sql 语法,构建 sql 语法树,方便后面去读取表名,列名,语句类型
- 执行阶段
- 预处理
- 检查 sql 查询语句中的表 or 字段是否存在
- 把*扩展为表上的所有列
- 优化阶段
- 决定如何走索引
- 如何 jion
- 执行阶段:根据表的引擎定义,去执行这个引擎提供的接口
- 预处理