本文最后更新于19 天前,其中的信息可能已经过时,如有错误请留言
一条sql语句是怎样执行的
mysql的两层架构:server层与存储引擎层
server层:建立连接、分析执行sql
存储引擎层:负责数据的提取
具体步骤:
1、连接器:连接mysql服务,tcp三次握手
2、8.0以后的版本已经删除了查询缓存(原因:如果查询结果很大并且被存入内存中,一条更新语句可能导致缓存全部失效)
3、解析sql:1.词法分析(提取关键字)2.语法分析(构建SQL语法树),这一步不会关注表或者字段是否存在
4、执行sql:
1.预处理器(检查表或者字段是否存在,将*替换成表对应的所有列)
2.优化器(决定sql语句的执行方案,使用索引还是全表扫描?使用主键索引还是覆盖索引?)
3.执行器(根据执行计划执行sql,存储引擎层可能会通过索引定位数据,然后提取数据,返回给执行层判断是否满足查询条件,最终将数据返回给客户端)