RDBMS|青训营笔记

84 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第19天。

RDBMS 基本情况介绍

关系型数据库:包括相互联系的逻辑组织和存取这些数据的一套程序 (数据库管理系统软件)。关系数据库管理系统就是管理关系数据库,并将数据逻辑组织的系统。

事务(Transaction):是由一组SQL语句组成的一个程序执行单元(Unit),它需要满足ACID特性。

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

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

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

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

数据库的设计流程:概念设计、逻辑设计和物理设计。

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

传统数据库分类:网状数据库、层次数据库、关系数据库。

网状数据库:基于网状数据模型建立的数据之间的联系,能反映现实世界中的信息的关联,是许多空间对象的自然表达形式。

层次数据库:使用树形结构来描述实体及其之间关系的数据模型。

SQL语言的特点:语法风格接近自然语言,高度非过程化,面向集合的操作方式,语言简洁易学易用。

RDBMS 关键技术分析

数据库操作的执行过程:用户发出请求,后台服务器(Route)接受请求,发送SQL语句给数据库,数据库的语法解析器(Parser)解析SQL语句,生成语法树给到优化器(Optimizer),生成树状Plan给到执行器(Executor),执行器读取文件返回给数据库,数据库再返回给后腰服务器,后台服务器再传递信息给用户,记录日志。

解析器操作过程:词法分析(通过保留关键字来把语句分为一个个字段)、语法分析(根据字段形成语法树)、语义分析(合法性校验)。

基于规则优化(RBO):条件化简、表连接优化、Scan优化(唯一索引、普通索引、全表扫描)、数据库索引。

基于代价优化(CBO):选择代价(时间、IO、CPU、NET、MEM)最低的方案执行。

执行模型:火山模型、向量化模型。

火山模型:每个Operaator调用Next操作,访问下层Operator,获得下层Operator返回的一行数据,经过计算后,将这行数据返回给上层。

火山模型的优点:每个算子独立抽象实现,相互之间没有耦合,逻辑结构简单。

火山模型的缺点:每计算一条数据有多次函数调用开销,导致CPU效率不高。

向量化模型:每个Operator每次操作计算的不再是一行数据,而是一批数据(Natch),计算完成后向上层算子返回一个Batch。

向量化模型的优点:函数调用次数降低为1/N,CPU cache命中率更高,可以利用CPU提供的SIMD机制。

LLVM动态编译执行技术

delete_mask:标识此条数据是否被删除。

next_record:下调数据的位置。

record_type:表示当前记录的类型。

Undo Log:逻辑日志,记录的是数据的增量变化,可以进行事务回滚,从而保证书屋的原子性,也实现了多版本并发控制(MVCC)。

redo log:物理日志,记录页面的变化,保证事务持久化,重启MySQL会根据redo log重做。

MVCC的意义:读写互不阻塞,降低死锁概率,实现一致性读。

永久保存数据修改的方法:事务提交前页面写盘、WAL。