【数据库|MySQL 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这边由连接器负责关闭这个连接,回收这个连接的资源
文章图片
推荐阅读
- 数据库|MySQL 主从复制原理
- 数据库|MySQL表锁、行锁、排它锁和共享锁
- 数据库|MySQL存储引擎以及索引
- 数据库|MySQL数据类型、运算符以及数据库范式
- 数据库|MySQL SQL和索引优化总结
- 数据结构|常见的排序算法(下)
- C语言|对比顺序表与链表——纵观与取舍
- C语言|十分钟手撕栈与队列——栈与队列实现详解
- C语言提高(一)