深入理解RDBMS | 青训营笔记

86 阅读3分钟

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

深入理解RDBMS

RDBMS(关系型数据库)是目前使用最为广泛的数据库之一,同时也是整个信息化时代的基石。本节课程通过生活中常见的场景向大家介绍RDBMS的作用、发展历程及其核心技术,最后以字节为例,展示了RDBMS的企业级实践。

经典案例

从抖音红包雨活动入手:

抖音账户扣除小目标,给用户账户加上小目标

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

原子性(Atomicity):事务是一个不可再分割的工作单元,事务中的操作要么都发生,要么都不发生。

一致性(Consistency):数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。

隔离性(Isolation):多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。

持久性(Durability):在事务完成以后,该事务所对数据库所做的更改便持久的保存在数据库之中,并不会被回滚

发展历史

人工管理-文件系统-DBMS时代

网状模型

image.png

层次模型

层次数据模型,即使用树形结构来描述实体及其之间关系的数据模型。

关系模型

image.png

关键技术

sql

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

sql引擎

  • parser:解析器(Parser)一般分为词法分析( Lexical analysis )、语法分析 ( Syntax analysis )语义分析(Semantic analyzer)等步骤。
  • Optimizer:根据Parser产生的语法树,根据规则或者代价产生执行计划树。

  • Executor:根据计划树进行执行,常见的执行方式是火山模型。

image.png

每个Operator调用Next操作,访问下层Operator,获得下层Operator返回的一行数据,经过计算之后,将这行数据返回给上层。

存储引擎-InnoDB

存储引擎负责了数据的底层存储、管理和访问工作。

  • Buffer Pool:存储引擎位于内存中的重要结构,用于缓存数据,减少磁盘IO的开销。
  • Page:数据存储的最基本单位,一般为16KB。
  • B+u Tree:InnoDB中最常用的索引结构。

事务引擎

事务引擎实现了数据库的ACID能力,

  • 原子性:在Innodb 由 undo log 日志保证事务的原子性,它在执行更新操作前会将旧值写入 undo log 日志文件,可根据该文件回滚,mysql服务器内部可以依赖binlog日志

  • 一致性: 保证了原子性、隔离性和持持久性就可以保证了

  • 隔离性: 由MVCC多版本控制保证的

  • 持久性: 由 buffer pool + redo log 日志保证的

    • mysql在执行修改操作将数据写到内存后,会将数据写入写redo log 日志文件
    • 如果事务提交成功,但buffer poll的数据还没来得及写入磁盘就宕机了,那么可以用redo log 里面的数据恢复buffer pool里的缓存数据