MySQL SQL的完整处理流程

mysql client和 mysql server进行通信的时候,如果走完所有的MySQL Server模块,需要依次经过连接器、解析器、优化器、执行器、存储引擎,如下图所示:
MySQL SQL的完整处理流程_第1张图片

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

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

如果单纯的一次通信,客户端得到这一次通信的结果后会主动关闭连接,MySQL Server这边由连接器负责关闭这个连接,回收这个连接的资源。
MySQL SQL的完整处理流程_第2张图片

你可能感兴趣的:(数据库,mysql,sql,数据库)