这是我参与「第三届青训营 -后端场」笔记创作活动的第5篇笔记。
介绍
分类
- 层次数据库:按记录来存取数据
- 网状数据库:采用网状原理和方法来存储数据
- 关系型数据库:以行和列的形式存储数据
SQL语言
- SQL无须了解存取路径,存取路径的选择以及SQL语句的操作过程由系统自动完成。
- 有利于提高数据独立性。面向集合的操作方式
- 采用集合操作方式,语言简洁,易学易用
- 功能极强,设计巧妙,语言简洁
关键技术
- 查询解析:先将文本解析成结构化数据(抽象语法树)。
- 查询优化:以需要一些复杂的逻辑选择如何拿数据,产生最优执行计划
- 查询执行:根据查询计划,完成数据读取、处理、写入等操作
- 事务引擎:外理事务一致性,并发,读写隔离等
- 存储引擎:内存中的数据缓存区、数据文件、日志文件
SQL引擎Parser
解析一般分为词法分析、语法分析、语义分析等步骤。
- 词法分析:将一条SQL语句对应的字符串分割为一个个token
- 语法分析:把词法分析的结果转为语法树。根据tocken序列匹西不同的语法规则;根据语法规则匹配SQL语句中的关键字,最终输出一个结构化的数据结构
- 语义分析:对语法树中的信息进行合法性校验
SQL引擎Optimizer
基于规划的优化RBO
数据库索引:数据库管理系统中辅助数据结构,以协助快速查询、更新数据库表中数据
SQL引擎Executor
- Plan Tree为基础
- 调用关系是由根到叶
- 数据流是由叶到根
存储引擎
- InnoDB
- BufferPool
- Page
- B+Tree
事务引擎
MVCC意义:
- 读写互不阻塞,降低死锁概率
- 实现一致性读
Undo Log在MVCC的作用:
- 每个事务有一个单增的事务ID
- 数据页的行记录中包含了DB ROW ID DB TRX ID, DB ROLL PTR
- DB ROLL PTR将数据行的所有快照记录都通过链表的结构串联