深入理解RDBMS | 青训营笔记

83 阅读1分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第3篇笔记


SQL语句的一生

image.png

  • 事物引擎
  • SQL引擎
  • 存储引擎

SQL引擎-Parser

词法分析、语法分析、语义分析

  • 通过词法分析,转为结构化表达
  • 语法分析转为机器理解的结构体
  • 语义分析判断是否合法 image.png

Optimizer

优化器产生优化路径

  • 基于规则的优化

image.png

  • 基于代价的优化 考虑单个代价最低,整体代价最低

Excecutor

火山模型

image.png

优点:逻辑结构简单,每个算子独立抽象实现,相互之间没有耦合 缺点:计算一条数据用多次函数调用,CPU效率不高

向量化

从一行数据到操作一批数据(n行)

image.png 优点:函数调用次数降低1/n; 可以利用cimd机制

编译执行

写到一个函数里面,但明显不适合应对用户sql千变万化的情况


存储引擎- InnoDB

image.png

Buffer Pool

image.png

通过hashmap进行计算,通过LRU进行内存轮转

page

image.png

B+树

构建索引

image.png

页面内:通过二分法快速定位到对应的槽,然后再遍历槽对应分组的记录


事物引擎

原子性(Atomicity)

MySQL通过 Undo Log 实现数据的回滚,Undo log 是逻辑日志,记录数据的增量变化

Isolation与锁

读锁、写锁、排他锁

  • MVCC
    • 读写互不堵塞

一致性 Redo log