这是我参与「第五届青训营 」伴学笔记创作活动的第 16 天。
RDBMS 事务 ACID
RDBMS 事务:是由一组SQL语句组成的一个程序执行单元,它需要满足ACID特性。
BEGIN;
UPDATE account_table SET balance = balance - '小目标' WHERE name = '抖音';
UPDATE account_table SET balance = balance + '小目标' WHERE name = '杨洋';
COMMIT;
ACID:
- 原子性:事务是一个不可再分割的工作单元,事务中的操作要么都发生,要么都不发生。
- 一致性:数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。
- 隔离性:多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。
- 持久性:在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
DBMS时代
1960s,传统的文件系统已经不能满足人们的需要,数据库管理系统(DBMS)应运而生。 DBMS:按照某种数据模型来组织、存储和管理数据的仓库。 所以通常按照数据模型的特点将传统数据库系统分成网状数据库、层次数据库和关系数据库三类。
DBMS
- 网状模型DBMS
- 层次模型DBMS
- 关系模型DBMS
DBMS数据模型
网状模型
- 优势:
能直接描述现实世界。 存取效率较高。
- 劣势:
结构复杂 。 用户不易使用。 访问程序设计复杂。
层次模型
- 优势:
结构简单。 查询效率高。 可以提供较好的完整性支持。
- 劣势:
无法表示M:N的关系。 插入、删除限制多。 遍历子节点必须经过父节点。 访问程序设计复杂。
关系模型
- 优势:
实体及实体间的的联系都通过二维表结构表示 可以方便的表示M:N关系 数据访问路径对用户透明
- 劣势:
关联查询效率不够高 关系必须规范化
SQL引擎:
- Paser:经过词法分析、语法分析生成语法树,然后对语法树进行合法性校验。
- Optimizer:根据Parser产生的语法树,根据规则或者代价产生执行计划树。
- Executor:根据计划树进行执行,常见的执行方式是火山模型。
存储引擎
- Buffer Pool:存储引擎位于内存中的重要结构,用于缓存数据,减少磁盘IO的开销。
- Page:数据存储的最基本单位,一般为16KB。
- B+u Tree:InnoDB中最常用的索引结构。
事务引擎
- Atomicity:InnoDB中通过undo日志实现了数据库的原子性,通过Undo Log,数据库可以回滚到事务开始的状态;
- Isolation:通过Undo Log实现MVCC(多版本并发控制),降低读写冲突。
- Durability:通过Redo Log(一种WAL实现方式)来保证事务在提交后一定能持久化到磁盘中。
- Consistency:一致性本质上是一种业务层的限制。
收获:通过本次课程的学习,了解了关系模型的基本概念和原理,如实体、属性、键、关系、范式; 掌握SQL语言的基本语法和常用命令,如SELECT、INSERT、UPDATE、DELETE等。