1,连接
连接管理模块,接收请求;连接进程和用户模块,通过,连接线程和客户端对接
2,查询
查询缓存 Query Cache
分析器:内建解析树,对其语法检查,先from,再on,再join,再where……;检查权限,生成新的解析树,语义检查(没有字段k在这里)等
优化器:将前面解析树转换成执行计划,并进行评估最优
执行器:获取锁,打开表,通过meta数据,获取数据
3,返回结果
返回给连接进程和用户模块,然后清理,重新等待新的请求
总结:
1、mysql主要组成部分,连接器,优化器,执行器,存储引擎。
2、连接器,验证账号密码,维持链接,超时自动断开,链接过程复杂,建议使用长链接,连接比较占用内存,需要定时断开,5.7之后可以使用mysql_reset_connection。
3、分析器,验证语法的合规性,把sql转换成mysql内部识别的语句,表明转换成对应的id。
4、判断sql内部的执行顺序。
5、执行器,验证操作库表是否有权限,调存储引擎接口查询数据。
6、慢查询日志rows_examined,记录查询的时候扫描了多少行,相同表有肯能次数不同。
