深入理解RDBMS | 青训营笔记

28 阅读4分钟

01. 经典案例

1.1 事务(Transaction):

是由一组SQL语句组成的一个程序执行单元(Unit),它需要满足ACID特性。

ACID

  • 原子性( tomicity): 事务是一个不可再分割的工作单元,事务中的操作要么都发生,要么都不发生。
  • 一致性( onsistency): 数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。
  • 隔离性(solation): 多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。
  • 持久性(Curability): 在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

02. 发展历史

2.1 前DBMS时代 一 人工管理

在现代计算机发明出来以前,通过人工的方式进行数据记录和管理

2.2 前DBMS时代 - 文件系统

1950s,现代计算机的雏形基本出现。1956年1BM发布了第一个的磁盘驱动器 -- Mdel 305 RAMA,从此数据存储进入磁盘时代。在这个阶段,数据管理直接通过文件系统来实现。

2.3 DBMS时代

1960s,传统的文件系统已经不能满足人们的需要,数据库管理系统( DBMS 应运而生DBMS: 按照某种数据模型来组织、存储和管理数据的仓库。所以通常按照数据模型的特点将传统数据库系统分成网状数据库、层次数据库和关系数据库三类。

数据模型

网状模型: 网状数据库所基于的网状数据模型建立的数据之间的联系,能反映现实世界中信息的关联,是许多空间对象的自然表达形式1964年,世界上第一个数据库系统-集成数据存储( ntegrated Data Storage ,IDS ) 诞生于通用电气公司。IDS是世界上第一个网状数据库,奠定了数据库发展的基础,在当时得到了广泛的应用。在19705网状数据库系统十分流行,在数据库系统产品中占据主导地位。

  • 优势

    • 能直接描述现实世界
    • 存取效率较高
  • 劣势

    • 结构复杂
    • 用户不易使用
    • 访问程序设计复杂

层次模型: 1968年,世界上第一个层次数据库-信息管理系统( nformation Management System ,IMS)诞生于IBM公司,这也是世界上第一个大型商用的数据库系统。层次数据模型,即使用树形结构来描述实体及其之间关系的数据模型。

  • 优势
    • 结构简单
    • 查询效率高
    • 可以提供较好的完整性支持
  • 劣势
    • 无法表示M:N的关系
    • 插入、删除限制多
    • 遍历子节点必须经过父节点
    • 访问程序设计复杂

关系模型: 1970年,IBM的研究员E.FCodd博士发表了一篇名为“A Relational ModelofData for larne Shared Data Banks"的论文,提出了关模型的概念,奠定了关系模型的理论基础。1979年Oracle首次将关系型数据库商业化,后续DB2SAP Sysbase ASE,and informix等知名数据库产品也纷纷面世。

  • 优势

    • 实体及实体间的的联系都通过二维表结构表示
    • 可以方便的表示M:N关系
    • 数据访问路径对用户透明
  • 劣势

    • 关联查询效率不够高
    • 关系必须规范化

SQL语言

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

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

03. 关键技术

SQL引擎-Parser

解析器(Parser)一般分为词法分析(Lexical analysis )、语法分析( Syntax analysis )、语义分析( Semantic analyzer )等步骤

SQL引擎-Optimizer

SQL引擎-Executor

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

存储引擎-InnoDb

  • In-Memory:

    • Buffer Pool
    • Change Buffer
    • Adaptive Hash Index
    • Log Buffer
  • On-Disk:

    • System Tablespace(ibdata1)
    • General Tablespaces(xxcx.ibd)
    • Undo Tablespaces(xxx.ibu)
    • Temporary Tablespacesxoxcx.ibt)
    • Redo Log(ib_logfileN)