RDBMS | 青训营笔记

55 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 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等。