深入理解RDBMS | 青训营笔记

77 阅读2分钟

这是我参与「第五届青训营」伴学笔记创作活动的第 2 天,本文主要介绍了RDBMS(关系型数据库)的发展与实践。

概述

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

网状模型

  • 优势:能直接描述现实世界、存取效率较高。
  • 劣势:结构复杂、用户不易使用、访问程序设计复杂。

层次模型

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

关系模型

  • 优势:实体及实体间的联系都通过二维表结构表示、可以方便的表示M:N关系、数据访问路径对用户透明。
  • 劣势:关联查询效率不够高、关系必须规范化。

一条SQL的一生

0XMHY4DW`@$JPK%ZZCEFDL6.png

SQL引擎

  • Parser(解析器)一般分为词法分析、语法分析、语义分析等步骤。
  • Optimizer(优化器):RBO(基于规则的优化)、CBO(基于代价的优化)
  • 火山模型Executor:每个operator调用Next操作,访问下层operator,获得下层Operator返回的一行数据,经过计算之后,将这行数据返回给上层。

存储引擎

  • InnoDB
  • Buffer Pool:MySQL在LRU算法上进行了优化,对数据进行冷热分离,将LRU链表分成两部分,一部分用来存放冷数据,也就是刚从磁盘读进来的数据,另一部分用来存放热点数据,也就是经常被访问到数据。当从磁盘读取数据页后,会先将数据页存放到LRU链表冷数据区的头部,如果这些缓存页在1秒之后被访问,那么就将缓存页移动到热数据区的头部;如果是1秒之内被访问,则不会移动,缓存区仍然处于冷数据区中。淘汰时,首先淘汰冷数据区。
  • Page
  • B+ Tree

事务引擎

  • 原子性与Undo Log(逻辑日志):逻辑日志记录数据增量变化,它的作用是保证事物的原子性和事务并发控制。可以用于事务回滚,以及提供多版本机制(MVCC),解决读写冲突和一致性的问题。
  • 隔离性与锁
  • 隔离性与MVCC:MVCC的意义(读写互不阻塞、降低死锁概率、实现一致性读)。
  • 持久化与Redo Log(物理日志):物理日志记录页面的变化,它的作用是保证事务持久化。如果数据写入磁盘前发生故障,重启MySQL后会根据Redo Log重做。