深入理解RDBMS | 青训营笔记

63 阅读2分钟

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

一、发展历史

1、前DBMS时代

人工管理

在计算机发明出来以前,通过人工的方式进行数据记录与管理
如“结绳记事”“账本”等

文件系统

1950年,现代计算机出现,数据存储进入磁盘时代,此阶段数据管理直接通过文件系统来实现

2、DBMS时代

1960年,数据库管理系统(DBMS)产生
DBMS:按照某种数据模型来组织、存储和管理数据的仓库
通常按照数据模型的特点将传统数据库系统分成三类:网状数据库、层次数据库、关系数据库

  • 网状模型
    • 能直接描述现实世界
    • 存取效率较高
  • 层次模型
    • 结构简单
    • 查询效率高
    • 可以提供较好的完整性支持
  • 关系模型
    • 实体间的联系都通过二维表结构表示
    • 可以方便地表示M:N关系
    • 数据访问路径对用户透明

3、SQL语言

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

二、关键技术

1、SQL引擎

(1) parser

解析器一般分为词法分析、语法分析、语义分析等步骤

(2) optimizer

优化器,基于规则优化内容

  • 条件化简:a = 5 and b > a -> a = 5 and b > 5
  • 表连接优化:总是小表先进行连接
  • Scan优化
    • 唯一索引
    • 普通索引
    • 全表扫描

(3) Executor

每个operator调用next操作,访问下层operator,获得下层operator返回的一行数据,经过计算后,将这行数据返回给上层
优点:每个算子独立抽象实现,相互之间没有耦合,逻辑结构简单
缺点:每计算一条数据有多次函数调用开销,导致CPU效率不高

向量化

每个operator每次操作计算的不再是一行数据,而是一批数据

编译执行

将所有的操作封装到一个函数里,函数调用的代价也能大幅降低

2、存储引擎

innoDB、Buffer Pool、Page、B+ Tree