SQL的完整处理流程
大约 1 分钟
SQL的完整处理流程
mysql client和 mysql server进行通信的时候,如果走完所有的MySQL Server模块,需要依次经过连接器、解析器、优化器、执行器、存储引擎
- 连接器:使用TCP加密的ssl通信协议,管理连接,控制最大连接量,检测连接时长(长时间不通信会断开,释放连接资源),权限验证(账号密码等),查询缓存(两次同样的select之间有更新操作,缓存会清空)
- 解析器:生成语法树,解析SQL词法以及语法分析
- 优化器:生成执行计划,选择索引(explain可查看)
- 执行器:调用存储引擎提供的相应API接口进行数据的读写
- 存储引擎:读写磁盘数据,构建B+树索引,事务日志(undo log/redo log),锁机制,隔离级别…
class BaseEngine{}
class MyISAM : public BaseEngine{}
class InnoDB : public BaseEngine{}
- 基类向外提供统一的接口,基类指针指向哪个对象,就调用哪个存储引擎类的方法
MySQL server相当于可以划分成3个模块(红色框):

如果单纯的一次通信,client拿到结果,会。MySQL Server这边由负责关闭这个连接,回收这个连接的资源
