流程图:
连接器
连接器与客户端建立连接、获取权限、维持和管理连接。
查询缓存(MySQL8.0后将会删除该功能 )
- 如果在缓存中查找到,则回直接返回给客户端。
- 如果没有找到记录,继续执行后面的操作,并将该语句与结果分别以key-value存入内存。
将query_cache_type 设置为 DEMAND,默认SQL不使用查询缓存,针对需要查询缓存的语句,使用SQL_cache显示指定,例如:select SQL_CACHE * from T where ID = 10;
分析器
- 词法分析
- 语法分析
根据语法规则判断是否符合SQL的语法。如果出现错误,则提示:"You have an error in your SQL syntax...",后面是错误的地方,需要你关注"use naer"后的内容。
优化器
- 当涉及到多个索引时,决定用哪个索引
- 多表关联时,决定连接顺序
执行器
真正的执行步骤,根据连接器取到的权限判断,是否对表T有权限。
- 若有权限,打开表继续操作。打开表后,根据表的引擎定义,使用引擎提供的接口。