这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天
经典案例
RDBMS事务
- 事务(Transaction):是由一组SQL语句组成的一个程序执行单元(Unit),它需要满足ACID特性
ACID
- 原子性(Atomicity):事务是一个不可再分割的工作单元,事务中的操作要么都发生,要么都不发生。
- 一致性(Consistency):数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。
- 隔离性(Isolation):多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。
- 持久性(Durability):在事务完成以后,该事务所对数据库所做的更改便持久的保存在数据库之中,并不会被回滚。
发展历史
- 1950s:使用文件系统进行数据管理
- 1960s:发明了DBMS
网状模型
- 用有向图表示实体和实体之间的联系的数据结构模型称为网状数据模型
层次模型
- 层次数据模型是用树状层次结构来组织数据的数据模型
关系模型
- 使用表格表示实体和实体之间关系的数据模型称之为关系数据模型
三者优劣对比
SQL语言:高度非过程化
非关系数据模型的数据操作语言是面向过程的语言,而关系模型数据库的操作语言SQL是高度非过程化的,是面向集合的操作方式
关键技术
SQL执行流程
在SQL执行过程中,需要经历SQL引擎、存储引擎、以及事务引擎等模块。而其中SQL引擎又分为Parser、Optimizer、Executor几个部分
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:一致性本质上是一种业务层的限制。
企业实践
- 大流量:sharding分片
- 流量突增:扩容
总结与思考
收获非常大的一节课,可惜时间原因没有更深入去阅读那些论文,以后有时间会慢慢看