这是我参与「第三届青训营 -后端场」笔记创作活动的第5篇笔记
前情回顾--关系型数据库
1、原子性
指整个数据库事务是不可分割的工作单位。只有使据库中所有的操作执行成功,才算整个事务成功;事务中任何一个SQL语句执行失败,那么已经执行成功的SQL语句也必须撤销,数据库状态应该退回到执行事务前的状态。
2、一致性
指数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。
3、隔离性 (或独立性)
指的是在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。事务查看数据更新时,数据所处的状态要么是另一事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看到中间状态的数据。
4、持久性
指的是只要事务成功结束,它对数据库所做的更新就必须永久保存下来。即使发生系统崩溃,重新启动数据库系统后,数据库还能恢复到事务成功结束时的状态。
一、SQL语句的流程
二、SQL引擎
以下面SQL语句为例:
UPDATE account_table SET balance = balance - '小目标' WHERE name = '抖音';
1、parser解析器
graph TD
词法分析 --> 语法分析--> 语义分析
- 词法分析 将SQL语句对应的字符串分割成一个个token,比如说关键字、表列名、常量、运算符、结束符
- 语法分析 将词法分析的结果转为语法树,根据token构建一个结构体
- 语义分析 对语法树中的信息进行合法性校验,检查表列名是否存在、常量类型是否合法
2、optimizer优化器
-
基于规则的优化(RBO)
- 条件化简
- 表连接优化
- Scan优化
-
基于代价的优化(CBO)
选择代价最低的方案执行
3、executor执行器
- 火山模型:
- 向量化
资料