{eval=Array;=+count(Array);}
1、客户端发送一条查询给服务器;然后客户端能做的就只是等待服务端的结果。
2、服务端收到查询后先检查查询缓存,如果刚好命中了缓存那么OK直接从缓存里拿出结果给客户端。如果没有那么就进入下一阶段。
3、服务器段解析SQL语句并进行一定的预处理,然后在优化器生成对应的执行计划(优化器的功能是找出最佳的执行计划);如果在这个过程中遇到任何错误都可能停止此次查询。
4、mysql根据优化器生成的最佳执行计划,通过存储引擎的API来执行查询,返回查询结果。
5、mysql将结果返回给客户端。
实际上mysql执行的每一步都比较复杂,此处仅就流程简要描述。
MySQL执行SQL的流程大概这样子的:
1. 连接器,这个步骤是和客户端建立连接
2. 分析器,解析SQL语句,这一步如果SQL语句写的不对就会报错了
3. 优化器,这个步骤主要是选择索引的,MySQL会选择认为最优的索引,实际上可能不是最优的
4. 执行器,这个步骤主要是根据表的定义,调用具体的存储引擎执行SQL,现在默认引擎是innodb。还有就是记录binlog日志。
这里省略了查询缓存的步骤,这个步骤在连接器之后,不过一般都是关闭缓存的。
0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答