这是我参与「第五届青训营」伴学笔记创作活动的第13天
RDBMS是关系型数据库管理系统(Relational Database Management System)的缩写。它是一种基于关系模型的数据库管理系统,采用了表格化的数据结构,用行和列的形式组织数据,同时使用SQL(Structured Query Language,结构化查询语言)来管理和操作数据。
RDBMS事务ACID
事务:是由一组SQL语句组成的一个程序执行单元,需要满足ACID特性
ACID
- 原子性:事务是一个不可再分割的工作单元,事务中的操作要么都发生,要么都不发生
- 一致性:数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性
- 隔离性:多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果
- 持久性:在事务完成以后,该事务对数据库所作的更改便持久的保存在数据库之中,并不会被回滚
RDBMS发展历史
- 前RDBMS时代--人工管理
- 前RDMBS时代--文件管理
- DBMS时代
- 网状数据库
- 层次模型
- 关系模型
关键技术
SQL引擎-Parser:解析器一般分为词法分析、语法分析、语义分析 SQL引擎-Optimizer:
- 基于规则的优化(条件化简、表连接优化、Scan优化)
- 基于代价的优化:选择代价最低的方案进行执行 SQL引擎-Executor
- 火山模型
- 向量化模型
- 编译执行
存储引擎
InnoDB、Buffer Pool、Page、B+ Tree
事务引擎
事务引擎主要用来实现ACID特性 Atomicity与Undo Log:利用逻辑日志Undo Log记录数据的增量变化,进行事务的回滚,从而保证事务的原子性。同时 也实现了多版本并发控制。
Isolation与锁:通过锁机制实现隔离机制,包括共享锁、排他锁
Durability与Redo Log:Redo log是物理日志,记录的是页面的变化,他的作用是保证事务持久化,如果数据写入磁盘前发生故障,重启MySQL后会根据Redo log重做