一次SQL的完整处理流程
mysql client和 mysql server进行通信的时候,
当我们要进行一个请求的时候,作为mysql client,首先和服务器进行通信,里面有一个查询缓存,属于连接器的部分,MySQL server是网络服务器,控制连接的,走的是TCP 加密的ssl通信协议,客户端在登录的时候,要进行合法性的检查(验证mysql账号密码之类的是否正确,后续如果有SQL过来,如果是select的话优先访问查询缓存,连接器到后边,就是所谓的解析器,解析SQL,生成解析树,验证SQL是否合法。解析器完成以后就到优化器,根据解析完成的SQL生成相应的SQL执行计划以及当前SQL的索引的选择,第五步就是在执行器,调用存储引擎对外。
连接器:管理连接,权限验证
解析器:词法以及语法分析
优化器:生成执行计划,选择合适索引
执行器:操作引擎获取结果
存储引擎:存储数据,提供读写接口
MySQL server相当于可以划分成3个模块:
如果单纯的一次通信,客户端得到结果,会主动关闭连接。由连接器负责关闭这个连接,回收这个连接的资源