一次SQL的完整处理流程
连接器:
- mysql client和 mysql server进行通信的时候,当我们要进行一个请求的时候,作为mysql client,首先和服务器进行通信,里面有一个查询缓存,属于连接器的部分,MySQL server是网络服务器,控制连接的,走的是TCP 加密的ssl通信协议;
- 客户端在登录的时候,要进行合法性的检查(验证mysql账号密码之类的是否正确,后续如果有SQL过来,如果是select的话优先访问查询缓存(两次同样的查询之间有更新操作,会清空缓存);
解析器:
- 连接器到后边,就是所谓的解析器,解析SQL,生成解析树,验证SQL是否合法。
优化器:
- 解析器完成以后就到优化器,根据解析完成的SQL生成相应的SQL执行计划以及当前SQL的索引的选择,确定好之后就到第五部;
执行器:
- 第五步就是在执行器,调用存储引擎对外。
MySQL server从大的方向 相当于 可以划分成 3个模块:
- mysql server
- 插件式存储引擎,对外提供(就是对mysql server提供API接口)统一接口来访问磁盘的数据
- 磁盘上的数据
最后、mysql sever的执行器根据存储引擎的API接口进行数据的读写操作, 查询的话,将查 询的结果在查询缓存中缓存一份,将结果返回给客户端。
如果单纯的一次通信,客户端得到结果,会主动关闭连接。由连接器负责关闭这个连接,回收这个连接的资源。