MySQL查询的执行过程概述
一、MySQL查询时的简要执行过程
- 连接器
- 查询缓存
- 解析器
- 预处理
- 优化器
- 执行器
二、连接器
- TCP 三次握手;
- 校验用户的账号密码;
- 根据用户分配权限,对用户修改权限不影响当前会话;
三、查询缓存
查询缓存(Query Cache
)以 key-value
键值对的形式存储。key 就是 SQL
语句,必须完全对应。同时如果对数据表内的一条数据进行更新,就会导致整张表的查询缓存失效。
8.0 以后的版本就默认删除了查询缓存功能。
四、解析SQL
解析器来处理这件事情,分为 词法分析和语法分析,依次来执行。
词法分析
提取关键字
语法分析
根据语法规则,判断语句是否合规,最后构建生成语法树
五、执行SQL
1.预处理器
- 检查表字段是否存在;
- 将
*
展开
2.优化器
根据查询的 SQL
语句,确定执行计划,确定使用什么索引来查询数据。
3.执行器
-
主键索引;
-
全表扫描;
-
索引下推
利用联合索引,将
Server
层负责处理的事情交给引擎层处理完成,减少回表操作。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
点赞!