执行一条Select语句流程

查询缓存

这里的查询缓存是 Server 层的,不是存储引擎层的 buffer pool,不过 Server 的缓存在 mysql8 之后被废弃了。

解析 SQL

解析器会对 sql 进行词法分析、语法分析,构建语法树

如果 sql 语法不对,就会在次阶段报错,如果是字段不存在则在此阶段是不会发现的。

执行 SQL

prepare 阶段

预处理器会检查 SQL 查询语句的表或字段是否存在

optimize 阶段

在优化阶段,优化器会为 SQL 指定执行计划,比如表中有多个索引,优化器会基于成本考虑选择使用哪个索引

execute 阶段

执行器会和存储引擎交互

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计