RDBMS小结 | 青训营笔记

78 阅读2分钟

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

前情回顾--关系型数据库

1、原子性

指整个数据库事务是不可分割的工作单位。只有使据库中所有的操作执行成功,才算整个事务成功;事务中任何一个SQL语句执行失败,那么已经执行成功的SQL语句也必须撤销,数据库状态应该退回到执行事务前的状态。

2、一致性

指数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。

3、隔离性 (或独立性)

指的是在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。事务查看数据更新时,数据所处的状态要么是另一事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看到中间状态的数据。

4、持久性

指的是只要事务成功结束,它对数据库所做的更新就必须永久保存下来。即使发生系统崩溃,重新启动数据库系统后,数据库还能恢复到事务成功结束时的状态。

一、SQL语句的流程

image.png

二、SQL引擎

以下面SQL语句为例:

UPDATE account_table SET balance = balance - '小目标' WHERE name = '抖音'; 

1、parser解析器

graph TD
词法分析 --> 语法分析--> 语义分析
  • 词法分析 将SQL语句对应的字符串分割成一个个token,比如说关键字、表列名、常量、运算符、结束符
  • 语法分析 将词法分析的结果转为语法树,根据token构建一个结构体
  • 语义分析 对语法树中的信息进行合法性校验,检查表列名是否存在、常量类型是否合法

2、optimizer优化器

  • 基于规则的优化(RBO)

    • 条件化简
    • 表连接优化
    • Scan优化
  • 基于代价的优化(CBO)

    选择代价最低的方案执行

3、executor执行器

  • 火山模型:

image.png

  • 向量化

image.png

资料

深入理解 RDBMS--字节后端训练营