MySQL SQL的完整处理流程

mysql client和 mysql server进行通信的时候,如果走完所有的MySQL Server模块,需要依次经过连接器、解析器、优化器、执行器、存储引擎

  1. 连接器:使用TCP加密的ssl通信协议,管理连接,控制最大连接量,检测连接时长,权限验证(账号密码等),查询缓存(两次同样的select之间有更新操作,缓存会清空)
  2. 解析器:生成语法树,解析SQL词法以及语法分析
  3. 优化器:生成执行计划(explain可查看)
  4. 执行器:调用引擎相应的API接口进行数据的读写
  5. 存储引擎:读写磁盘数据,构建B+树索引,事务日志(undo log/redo log),锁机制,隔离级别…
class BaseEngine{}

class MyISAM : public BaseEngine{}
class InnoDB : public BaseEngine{}

基类向外提供统一的接口,基类指针指向哪个对象,就调用哪个存储引擎类的方法

MySQL server相当于可以划分成3个模块:
MySQL SQL的完整处理流程_第1张图片
如果单纯的一次通信,client拿到结果,会主动关闭连接。MySQL Server这边由连接器负责关闭这个连接,回收这个连接的资源
MySQL SQL的完整处理流程_第2张图片

你可能感兴趣的:(数据库,数据库,C语言)