一条 SQL 语句是如何执行的
- 连接器:连接器负责跟客户端建立连接、获取权限、维持和管理连接。
- 查询缓存(MySQL 8.0 中已弃用):MySQL 拿到一个查询请求后,会先到查询缓存看看,之前是不是执行过这条语句。之前执行过的语句及其结果可能会以 key-value 对的形式,被直接缓存在内存中。
- 分析器:MySQL 需要识别出 SQL 语句中的字符串分别是什么,代表什么。
- 优化器:优化器是在表里面有多个索引的时候,决定使用哪个索引;或者在一个语句有多表关联(join)的时候,决定各个表的连接顺序。
- 执行器:MySQL 通过分析器知道了要做什么,通过优化器知道了该怎么做,于是就进入了执行器阶段,开始执行语句。