深入理解RDBMS | 青训营笔记

118 阅读3分钟

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

在参加青训营之前我对于数据库的了解仅仅停留在RDBMS关系型数据库Mysql的简单SQL语句使用,并没有去真正了解过RDBMS的原理是怎么样的。青训营的这节课让我收获了很多。

事务

什么是事务?

事务是一组SQL语句组成的单个逻辑工作,要么完全地执行,要么完全地不执行。

事务需要满足ACID特性

事务的四个特性

ACID

原子性(Atomicity):事务是一个不可再分割的工作单元,事务中的操作要么都发生,要么都不发生。

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

隔离性(isolation):多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。

持久性(Durability):在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

DBMS数据库管理系统

什么是DBMS?

DBMS是按照某种数据模型来组织,存储和管理数据的仓库。

DBMS数据模型

DBMS主要分为三类 分别是

1. 网状模型

image.png

2. 层次模型

image.png

3. 关系模型

image.png

关键技术

关键技术分为三大类分别是SQL引擎和事务引擎以及存储引擎

其中与日常工作关联性高的主要是SQL引擎和事务引擎,下面主要对SQL引擎进行介绍

SQL引擎工作原理

1.解析器Parser对SQL语句进行查询解析,效果类似于对代码的解析编译过程。

解析流程包括:

1.词法方析: 先将一条SQL语句分割为一个个token,可以进行简单分类(关键字类型 表列名 常量 运算符 结束符 等等)

2.语法分析: 把词法分析的结果转换成语法树(AST) ,根据不同的token匹配不同的语法规则 比如词法分析中提取的关键字token是update那么匹配的就是update的语法规则。

3.语义分析:对语法树中的信息进行合法性校验。

2. Optimizer优化器进行优化产生执行路径交给执行器执行

优化器有两种优化方案 1.基于规则的优化RBO(Rule Base Optimizer) 2.基于代价的优化CBO(Cost Base Optimizer)

3.执行器Executor执行

执行器执行方式也分为几种模型 以火山模型为例 函数栈一层层向下执行,最后访问存储引擎 执行产生的数据结果一层层向上进行返回 外形像一座火山 image.png 优点:每一个算子Operator独立进行工作比如Filter就执行过滤,Table Scan就进行表扫描,相互之间没有耦合,逻辑独立。

缺点:计算一条数据有多次函数调用开销 , 导致CPU效率不高