这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天
ACID —— 事务四大特性
-
原子性(Atomicity):事务是一个不可再分割的工作单元,事务中的操作要么都发生,要么都不发生。
-
一致性(Consistency):数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。
-
隔离性(Isolation):多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。
-
持久性(Durability):在事务完成以后,该事务所对数据库所做的更改便持久的保存在数据库之中,并不会被回滚。
数据库发展历史
- 网状模型:用有向图表示实体和实体之间的联系的数据结构模型称为网状数据模型。
-
优势:能直接描述现实世界、存取效率较高
-
劣势:结构复杂、用户不易使用、访问程序设计复杂
-
- 层次模型:层次数据模型是用树状<层次>结构来组织数据的数据模型。
- 优势:结构简单、查询效率高、可以提供较好的完整性支持
- 劣势:无表示 M:N 的关系、插入、删除限制多、遍历子节点必须经过父节点、访问程序设计复杂
- 关系模型:使用表格表示实体和实体之间关系的数据模型称之为关系数据模型。
-
优势:实体及实体间的联系都通过二维表结构表示、可以方便的表示M:N关系、数据访问路径对用户透明
-
劣势:关联查询效率不够高、关系必须规范化
-
SQL 引擎
- Paser:经过词法分析、语法分析生成语法树,然后对语法树进行合法性校验。
- Optimizer:根据 Parser 产生的语法树,根据规则或者代价产生执行计划树。
- Executor:根据计划树进行执行,常见的执行方式是火山模型。
存储引擎
- Buffer Pool:存储引擎位于内存中的重要结构,用于缓存数据,减少磁盘 IO 的开销。
- Page:数据存储的最基本单位,一般为 16KB。
- B+u Tree:InnoDB 中最常用的索引结构。
事务引擎
-
Atomicity:InnoDB 中通过 Undo Log 实现了数据库的原子性,通过 Undo Log,数据库可以回滚到事务开始的状态。
-
Isolation:通过 Undo Log 实现MVCC(多版本并发控制),降低读写冲突。
-
Durability:通过 Redo Log(一种 WAL 实现方式)来保证事务在提交后一定能持久化到磁盘中。
-
Consistency:一致性本质上是一种业务层的限制。