深入理解RDBMS | 青训营笔记

98 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天

DBMS数据模型

  • 网状数据库
    • 网状数据库所基于的网状数据模型建立的数据之间的联系,能反映现实世界中信息的关联,是许多空间对象的自然表达形式。 1964年,世界上第一个数据库系统——集成数据存储(Integrated Data Storage,IDS)诞生于通用电气公司。IDS是世界上第一个网状 数据库,奠定了数据库发展的基础,在当时得到了广泛的应用。在1970s网状数据库系统十分流行,在数据库系统产品中占据主导地位。
    • image.png
  • 层次数据库
    • 1968年,世界上第一个层次数据库——信息管理系统(Information Management System,IMS)诞生于IBM公司,这也是世界上第一个 大型商用的数据库系统。层次数据模型,即使用树形结构来描述实体及其之间关系的数据模型。
    • image.png
  • 关系数据库
    • 1970年,IBM的研究员E.F.Codd博士发表了一篇名为“A Relational Model of Data for Large Shared Data Banks”的论文,提出了关系模型 的概念,奠定了关系模型的理论基础。1979年Oracle首次将关系型数据库商业化,后续DB2, SAP Sysbase ASE, and Informix等知名数据 库产品也纷纷面世。

image.png

SQL语言

1974年IBM的Ray Boyce和Don Chamberlin将Codd关系数据库的12条准则的数学定义以简单的关键字语法表现出来,里程碑式地提出了 SQL(Structured Query Language)语言。

  • 语法风格接近自然语言;
  • 高度非过程化;
  • 面向集合的操作方式;
  • 语言简洁,易学易用。

关键技术

一条SQL的一生

image.png

SQL引擎

  • Parser
    • 解析器(Parser)一般分为词法分析(Lexical analysis)、语法分析(Syntax analysis)、语义分析(Semantic analyzer)等步骤
  • Optimizer
    • 基于规则的优化(RBO Rule Base Optimizer)
      • 条件化简
      • 表连接优化
        • 总是小表先进行连接
      • Scan优化
        • 唯一索引
        • 普通索引
        • 全表扫描
    • 基于代价的优化(CBO Cost Base Optimizer
      • 一个查询有多种执行方案,CBO会选择其中代价最低的方案去真正的执行。
  • Executor
    • 火山模型
      • 每个Operator调用Next操作,访问下层Operator,获得下层Operator返回的一行数据,经过计算之后,将这行数据返回给上层。
      • 优点
        • 每个算子独立抽象实现,相互之间没有耦合,逻辑结构简单
      • 缺点
        • 每计算一条数据有多次函数调用开销,导致CPU效率不高。
      • image.png
    • 向量化
      • 每个Operator每次操作计算的不再是一行数据,而是一批数据 (Batch N行数据),计算完成后向上层算子返回一个Batch。
      • 优点:
        • 函数调用次数降低为1/N;
        • CPU cache命中率更高;
        • 可以利用CPU提供的SIMD(Single Instruction Multi Data)机制。
    • 编译执行
      • 将所有的操作封装到一个函数里面,函数调用的代价也能大幅度降低。
      • LLVM动态编译执行技术

存储引擎-InnoDB

image.png

  • Buffer Pool
    • HashMap
    • LRU
  • image.png
  • B+ Tree

事务引擎

  • Atomicity 与 Undo Log
    • Undo Log是逻辑日志,记录的是数据的 增量变化。利用Undo Log可以进行事务 回滚,从而保证事务的原子性。同时也 实现了多版本并发控制(MVCC),解 决读写冲突和一致性读的问题。
  • Isolation 与 MVCC
    • 读写互不阻塞;
    • 降低死锁概率;
    • 实现一致性读
  • Durability 与 Redo Log