摘要:
考虑到现在项目的情况, 对所使用的mysql5.7.36代码做总体上的概括分析.
方式上是采用先总体,后局部的做法。
mysql5.7的代码风格:
- 虽然使用了c++语言, 但是逻辑流程上却是古典的纯C的风格
- 可以将其代码的思想理解成数据结构和算法
- 没有像c++那种明显的面向对象的概念, 模块与模块间没有明显的清晰的边界
- 核心是其数据结构
- 所有的流程都可以理解为对其数据结构的操作
最核心的目录模块:
- SQL目录
- storage/tianmu目录
SQL目录:
- 包含与查询相关的所有的模块
- 从词法解析,语法解析,预处理,以及各种逻辑优化和物理优化
- 可以理解为mysql的查询处理本身,但不仅仅限于查询
- 如果引擎采取标准的做法,也就是实现handler接口, 那么sql层就是使用方
- 但是tianm的做法不是以handler接口为对外的入口, 而是直接替换了整个查询处理
storage/tianmu目录:
- tianmu引擎的目录
- 进入tianmu引擎的做法,是直接在sql层硬编码, 由tianmu层做所有的处理
- 对于引擎的hand