这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
事务(Transaction):是由一组SQL语句组成的一个程序执行单元,它需要满足ACID特性
ACID:
- 原子性(atomicity) :事务是一个不可再分割的工作单元 ,事务中的操作要么都发生,要么都不发生。
- 一致性(consistency) :数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。
- 隔离性(isolation) :多个事务并发访问时,事务之间是隔离的, 一个事务不应该影响其它事务运行效果。
- 持久性(durability) :在事务完成以后 ,该事务所对数据库所作的更改便持久的保存在数据库之中 ,并不会被回滚。
发展历史
人工管理——>文件系统——>DBMS 通常按照数据模型的特点将传统数据库系统分成网状数据库、层次数据库、关系数据库三类
三种数据模型的优缺点:
SQL
1974年IBM的Ray Boyce和Don Chamberlin将( odd关系数据库的12条准则的数学定义以简单的关键字语法表现出来,里程碑式地提出了SQL(Structured Query Language)语言。
- 语法风格接近自然语言
- 高度非过程化
- 面向集合的操作方式
- 语言简洁,易学易用
关键技术
一条SQL的一生
Parser(语法解析器) AST(语法树) Optimizer(优化器) Pian Execute(执行器)
SQL引擎
- 解析器(Parser):一般分为词法分析(Lexical)、语法分析(Syntax)、语义(Semantic)分析等步骤。
- 优化器(Optimizer):基于规则优化、基于代价优化
- 执行器(Executor):火山模型向下调研,数据向上返回。
向量和编译执行优于火山模型
存储引擎
更多信息:MySQL :: MySQL 8.0 Reference Manual :: 15.4 InnoDB Architecture
LRU算法去管理内存空间,淘汰老的数据,保留新的数据。
B+树索引
事务引擎
Atomicity & Undo
Isolation & 锁
Isolation & MVCC
MVCC的意义:
- 读写互补阻塞
- 降低死锁概率
- 实现读写一致性