这是我参与「第五届青训营」笔记创作活动的第13天
1. 本节课重点内容
- 基本概念
- 发展历史
- 关键技术
2. 基本概念
2.1 RDBMS 事物 ACID
- 事物:是由一组sql语句组成的一个程序执行单元(Unit),它需要满足ACID特性
- ACID
- 原子性
- 一致性
- 隔离性
- 持久性
3. 发展历史
3.1 人工管理
- 结绳记事
- 清代钱庄账本
- 打孔机
3.2 文件系统
1956年IBM发布了第一个的磁盘驱动器--Model 305 RAMAC,从此数据存储进入磁盘时代
3.3 DBMS时代
- 按照某种数据模型来组织、存储和管理数据库的仓库
- 传统数据库分为
- 网状数据库
- 层次数据库
- 关系数据库
3.4 网状数据库
网状数据库是世界上第一个数据库,奠定了数据库发展的基础
3.5 层次模型
通过树结构来描述实体及其之间的关系的数据模型
3.6 关系模型
利用关系描述关系特征
3.7 优势与劣势
3.8 SQL语言
1974年IBM的Ray Boyce和Don Chamberlin将Codd关系数据库的12条准则的数字定义以简单的关键字语法表现出来,里程碑式的提出了SQL语言
- 语法风格接近自然语言
- 高度非过程化
- 面向集合的操作方式
- 语言简洁,易学易用
3.9 发展历史
4. 关键技术
4.1 一条SQL的一生
4.2 SQL引擎 - Parser
解析器一般分为词法分析、语法分析、语义分析等步骤
4.3 Sql引擎-Optimizer
- 条件化简
- 表连接优化
- 总是小表先进行连接
- Scan优化
- 唯一索引
- 普通索引
- 全表扫描
4.4 Sql引擎-Executor
火山模型
- 优点
- 每个算子独立抽象实现,相互之间没有耦合,逻辑结构简单
- 缺点
- 每计算一条数据有多次函数调用开销,导致cpu效率不高
4.5 存储引擎-InnoDB
4.5.1 Buffer Pool
4.5.2 Page
4.5.3 B+Tree
4.6 事物引擎 - Atomicity 与 Undo Log
实现数据的回滚
- Undo Log 是逻辑日志,记录的是数据的增量变化。利用Undo Log 可以进行事物回滚, 从而保证事物的原子性