MySQL-深入理解RDBMS | 青训营笔记

61 阅读6分钟

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

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

1、经典案例-红包雨

SQL语言

1.1 RDBMS事务ACID

事务:由一组SQL语句组成的一个程序执行单元(Unit),满足ACID。两条更新操作不再是独立的,形成了一个整体,这个整体称为一个事务

1.2 红包雨与ACID

课上列举了四个例子生动形象地说明了ACID特性

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

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

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

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

1.3 红包雨与高并发

高并发(Concurrency)

1.4 红包雨与高可靠

高可靠、高可用(High Reliability/Availability)

2、发展历史

2.1 前DBMS时代

2.1.1 人工管理

人工方式进行数据记录和管理

2.1.2 文件系统

数据管理直接通过文件系统实现

2.2 DBMS

数据库管理系统(DBMS):按照某种数据模型组织、存储和管理数据的仓库

根据数据模型的特点将传统数据库系统分成三类:网状数据库(网状原理和方法存储)、层次数据库(按记录存储)和关系数据库(以行和列的形式存储)

层次型、网状型、关系型数据库划分的原则是数据之间的联系方式

2.2.1 网状模型

网状数据模型是以记录类型为结点的网状结构,一个结点可以有一个或多个下级结点,也可以有一个或多个上级结点,两个结点之间可以有多种联系,如复合链。该模型能反映现实世界中信息的关联,是许多空间对象的自然表达形式

2.2.2 层次模型

树结构,每棵树有且仅有一个根节点,每个节点表示一个记录类型对应实体的概念,记录类型的各个字段对应的各个属性

2.2.3 关系模型

使用表格表示实体和实体之间。无论是实体还是实体之间的联系都是被映射成统一的关系,即二维表。借助表可实现多对多的关系

2.3 DBMS数据模型优缺点

网状模型:直接描述现实世界、存取效率较高;结构复杂、用户不易使用、访问程序设计复杂

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

关系模型:二维表结构表示、便于表示M:N关系、数据访问路径对用户透明;关联查询效率不高、关系必须规范化

2.4 SQL语言(Structured Query Language)

语法风格接近自然语言、高度非过程化、面向集合、语言简洁

3、关键技术

3.1 SQL引擎

查询解析:将文本结构化抽象语法树(AST)

查询优化:根据AST优化产生最优执行计划(Plan Tree)

查询执行:根据查询计划完成数据读取、处理、写入操作

事务引擎:处理事务一致性、并发、读写隔离等

存储引擎:内存中的数据缓存区、数据文件、日志文件

3.1.1 解析器(Parser)

词法分析:将SQL语句对应的字符串分割为一个个token

语法分析:词法分析的结构转为语法树。根据token序列匹配不同的语法规则匹配SQL语句中的关键字,输出一个结构化的数据结构

语义分析:对语法树中的信息进行合法性校验

3.1.2 优化器(Optimizer)

基于规则的优化(RBO):条件化简、表连接优化、Scan优化

基于代价的优化(CBO):时间代价

3.1.3 执行器(Executor)

火山模型:Plan Tree为基础,调用关系是由根到叶,数据流是从叶到根。每个算子独立抽象实现,相互之间没有耦合,逻辑结构简单。每计算一条数据有多次函数调用开销,CPU效率不高

向量化:适于大批量数据处理,对于很多单行数据处理并没有优势,搭配列式存储使用。调用次数降低为1/N,CPU cache命中率更高,可以利用CPU提供的SIMD机制

编译执行:LLVM动态编译执行技术

3.2 存储模型

3.2.1 InnoDB

3.2.2 Buffer Pool

淘汰已有页面:对数据进行冷热分离,将LRU链表分成两部分,一部分存放冷数据,另一部分存放热数据。淘汰时首先淘汰冷数据区

3.2.3 Page

3.2.4 B+树

3.3 事务引擎

3.3.1 Atomicity与Undo Log

逻辑日志(Undo Log):记录数据增量变化,保证事务原子性和事务并发控制,用于事务回滚,提供多版本机制(MVCC)

3.3.2 Lsolation与锁

锁机制保证多个并发事务同时访问同一行记录

3.3.3 Lsolation与MVCC

MVCC:读写互不阻塞、降低死锁概率、实现一致性读

3.3.4 Durability与Redo Log

Redo Log是物理日志,记录页面变化,保证事务持久化

4、企业实践

4.1 红包雨实战

4.2 大流量-Sharding

业务数据进行水平拆分、代理层进行分片路由

4.3 流量突增-扩容

扩容DB物理节点数量、利用影子表进行压测

4.4 流量突增-代理连接池

代理侧支持连接队列、代理侧预热连接池、业务预热连接池

4.5 稳定性&可靠性

4.5.1 3AZ高可用

三机房部署、Proxy、监控警报、HA

4.5.2 HA管理

HA服务监管、切换宕机节点、代理支持配置热加载、自动屏蔽宕机读节点

课后个人总结

RDBMS是目前使用最为广泛的数据库之一,是整个信息化时代的基石。通过本节课的学习,我了解了不少RDBMS作用、发展历程及其核心技术的知识,最后还认识到了RDBMS的企业级实践