[ RDBMS | 青训营笔记 ]
这是我参与「第五届青训营」伴学笔记创作活动的第 14 天
零、前言:
记个笔记顺便(恰青豆还是有很多不完善也有可能对的地方还请大佬们指正
一、本堂课重点内容:
- 经典案例
- 发展历史
- 关键技术
- 企业实践
二、详细知识点介绍:
14.1 经典案例
ACID
高并发
高可靠
14.2 发展历史
前DBMS:人工管理,文件系统
DBMS:网状数据库 -> 层次模型(每一个子节点只能有一个父节点) -> 关系型数据库
14.3 关键技术
sql 执行流程:
sql --> RDBMS --> Parser(语法解析器) -AST(语法树)-> Optimizer(优化器) -Pian-> Executor(执行器) --> Data file
sql引擎:
Parser: 词法分析,语法分析,语义分析
Optimizer:基于规则,基于代价。对于InnoDB 存储引擎来说,全表扫描的意思就是把聚簇索引中的记录都依次和给定的搜索条件做一下比较,把符合搜索条件的记录加入到结果集,所以需要将对应的页面加载到内存中,然后再检测记录是否符合搜索条件。
对于使用二级索引 + 回表方式的查询,设计MySQL 的大叔计算这种查询的成本依赖两个方面的数据:范围区间数量,需要回表数据量
Executor:火山模型,每一个算子调用next向下运行,查到数据后一层层返回
存储引擎:innoDB
- Buffer Pool:存储引擎位于内存中的重要结构,用于缓存数据,减少磁盘IO的开销。
- Page:数据存储的最基本单位,一般为16KB。
- B+u Tree:InnoDB中最常用的索引结构。
事务引擎:
事务引擎实现了数据库的ACID能力,这里还是以MySQL的InnoDB为例来介绍数据库内部是通过哪些技术来实现ACID:
- Atomicity:InnoDB中通过undo日志实现了数据库的原子性,通过Undo Log,数据库可以回滚到事务开始的状态;
- Isolation:通过Undo Log实现MVCC(多版本并发控制),降低读写冲突。
- Durability:通过Redo Log(一种WAL实现方式)来保证事务在提交后一定能持久化到磁盘中。redo log就是在创建一个sql语句还原回原来的值比如执行 delete 那么redo 里面是 create 这样。
- Consistency:一致性本质上是一种业务层的限制。
14.4 企业实战
展示了字节是如何解决大流量、流量突增、高可靠等问题的。