这是我参与「第三届青训营 -后端场」笔记创作活动的的第3篇笔记
SQL语句的一生
- 事物引擎
- SQL引擎
- 存储引擎
SQL引擎-Parser
词法分析、语法分析、语义分析
- 通过词法分析,转为结构化表达
- 语法分析转为机器理解的结构体
- 语义分析判断是否合法
Optimizer
优化器产生优化路径
- 基于规则的优化
- 基于代价的优化 考虑单个代价最低,整体代价最低
Excecutor
火山模型
优点:逻辑结构简单,每个算子独立抽象实现,相互之间没有耦合 缺点:计算一条数据用多次函数调用,CPU效率不高
向量化
从一行数据到操作一批数据(n行)
优点:函数调用次数降低1/n;
可以利用cimd机制
编译执行
写到一个函数里面,但明显不适合应对用户sql千变万化的情况
存储引擎- InnoDB
Buffer Pool
通过hashmap进行计算,通过LRU进行内存轮转
page
B+树
构建索引
页面内:通过二分法快速定位到对应的槽,然后再遍历槽对应分组的记录
事物引擎
原子性(Atomicity)
MySQL通过 Undo Log 实现数据的回滚,Undo log 是逻辑日志,记录数据的增量变化
Isolation与锁
读锁、写锁、排他锁
- MVCC
- 读写互不堵塞