存储与数据库(二)| 青训营笔记

95 阅读6分钟

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

一、重点内容:

1.1 知识要点有哪些?

  • RDBMS基本概述
  • RDBMS关键技术

二、详细知识点介绍:

2.1 RDBMS基本概述

关系数据库管理系统(RDBMS)是一种使用声明性语言(SQL)和定义的抽象数据模型来管理数据的软件系统。 数据存储在关系数据库中,这些数据以表格的形式出现,每一行就是一条记录,每一列就是一个字段。 RDBMS使用它独特的数据模型来维护数据的完整性,以及允许用户将数据映射到不同的应用程序中。常见的RDBMS包括Microsoft SQL Server、Oracle Database、MySQL和PostgreSQL

事务是RDBMS的基本概念,它是一组关联的SQL语句,用于保证数据库的完整性和一致性。事务必须是原子性的,即要么它们都被执行,要么它们都不会被执行。事务还必须是隔离的,即一个事务不能影响另一个事务的执行。事务还必须是持久的,即一旦提交,它们不会自动更改或删除。

ACID(原子性、一致性、隔离性和持久性)是数据库系统非常重要的一个特性,它使得在多种功能中提供了一致性保存,这些功能可以确保写入的操作不会因为多个用户的并发操作而导致数据损坏,同时确保事务的最终一致性,数据库的ACID特性分为以下四个部分:原子性(Atomicity):事务是一个不可分割的整体,每个事务都必须作为一个完整的单位来执行;一致性(Consistency):一个事务执行之后,必须能够确保数据库处于一致性状态;隔离性(Isolation):多事务在同一时间运行时,将不能互相影响;持久性(Durability):当一个事务完成后,其结果将永久保存在数据库中,即使发生系统故障也不会改变结果。

2.2 RDBMS关键技术

2.2.1 SQL引擎

Parser是一种技术,用于处理SQL语句并产生可执行的查询计划。它是一种特殊的编译器,将SQL语句翻译成机器可以识别的代码。SQL Parser会从左至右扫描SQL语句,识别它的单词,在此过程中,它将对语句中使用的各种键入、表和操作符进行语法检查,确保它们是有效的组合,然后构建一个查询计划树来表示SQL查询的结构和处理顺序,最后将查询计划树转换成可以执行的机器指令。

Optimizer是一种优化器,它用来改进SQL语句。通常,它会尝试以最有效的方式执行SQL语句,以便在最短的时间内获得最佳结果。Optimizer会从每个SQL查询中识别出特定计划,并考虑两个风险:首先,计划本身影响查询执行的性能;其次,不同数据库系统中处理SQL语句的方式有所不同,因此,不同计划在不同数据库系统中的性能表现也可能不同。最终,Optimizer将根据SQL查询的性能需求和数据库环境,选择出对给定SQL查询的最优计划。

Executor是SQL引擎的核心组件,它负责实施SQL语句并返回结果。它执行SQL语句时,会首先将SQL语句编译成可执行的机器代码,然后再执行这些机器代码,最后返回查询结果。 Executor在数据库中还负责执行其他一些功能,如管理内存资源,以及调用数据库内部函数等。

2.2.2 存储引擎

InnoDB是一个关系数据库存储引擎,它具有多版本并发控制、自适应哈希索引、全文本搜索、行级锁定和事务安全性等特性。它也支持多核CPU,可以同时支持多用户连接,并且支持大型数据集和高可用性方案。InnoDB存储引擎是MySQL中最流行的存储引擎之一,并且很受欢迎。其中:

  • Buffer Pool是MySQL中存储引擎InnoDB的一部分,它是一个内存缓冲区,用于存储已访问过的页面,以供不断使用。它可以有效地减少磁盘I/O,加快查询性能,并优化数据库性能。Buffer Pool具有多种不同大小的缓冲区,可以根据需要调整大小,这使得MySQL能够更有效地利用服务器上的内存。
  • Page是MySQL中存储引擎InnoDB的一部分,它是文件系统中存储数据的基本单位。Page中包含头部信息、行内容、索引或其他信息,以及一个页签用于显示相关的数据。Page占用16KB的磁盘空间,因此它可以有效地降低数据库的I/O性能,并为每个表提供更好的机械优化。

2.2.3 事务引擎

事务引擎是一种数据库管理系统(DBMS)的子组件,可以处理原子事务并维护数据库的完整性和一致性。事务引擎有助于确保指令的结果能够正确地实施,并将所有更改都保存在一个适当的位置。在RDBMS中,事务引擎还可以实现其他功能,如数据库锁定和隔离级别,以及数据备份和恢复。

Atomicity是指在一个单一事务中,所有操作要么都成功完成,要么都不完成,不会出现局部失败的情况。这可以通过使用Undo Log实现,该日志记录了事务正在执行过程中所发生的所有更改,以便在出现问题时,可以回滚到正确和一致的状态。

Isolation(隔离)和lock(锁定)是为了防止竞争条件。Isolation通过分离不同事务以避免数据混乱,而lock用于控制对共享数据的访问以避免数据发生变更。Isolation可以通过实施不同的级别来控制容忍一个事务在另一个事务执行期间可能引起的中间状态。例如,Read Uncommitted级别允许事务查看另一个事务在未提交状态时写入的数据。而lock锁定受保护的数据以防止 MVCC(多版本并发控制)是一种用于物理上存储数据,以便实现并发访问的技术。它允许多个事务在同一时间存取数据库,因此不会阻塞其他事务的访问。它通过在每条记录中添加一对表示数据有效时间的字段来实现。

Durability是指事务在数据库中的持久性。也就是说,即使在系统故障后,事务执行的结果仍然保存在数据库中。这是通过使用持久存储器(如磁盘)并在事务提交后在数据库中将其写入持久存储器来实现的。

Redo Log是事务引擎用来维护事务的日志文件。该日志记录了在事务过程中执行的每个操作,并且在事务提交之前将其写入持久存储器。如果系统故障,事务引擎可以使用Redo Log重做事务,以保证数据库的一致性和完整性。

三、引用参考

青训营学习资料六