RDBMS关系型数据库 | 青训营笔记

167 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第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将数据行的所有快照记录都通过链表的结构串联