My avatar, a blue cat cartoon picture

【译】数据是如何存储在 SQL 数据库中



SQL

本篇博客技术相关内容翻译自 pragimtech 的:How is data stored in sql database,本文中大部分图片与代码出自该文章。

翻译水平有限,见谅。

0. 前言

作为开发者,数据库相关的知识十分重要,特别是当你想要排除故障并修复性能不好的 SQL 查询时。理解以下这些术语是非常重要的,特别是当你正在进行 Sql Server 性能调优相关的操作时。

  1. Data pages(数据页)
  2. Root node(根节点)
  3. Leaf nodes(叶节点)
  4. B-tree(B 树)
  5. Clustered index structure(聚集索引结构)

1. 数据是在物理上是如何存储在 SQL Server 中的?

表中的数据在逻辑上以行和列的格式存储,但在物理上,它以 Data pages(数据页)的形式存储。

数据页是 SQL Server 中数据存储的基本单位,每个数据页的大小为 8KB。当我们将任何数据插入到 SQL Server 数据库表中时,它将该数据保存到一系列 8KB 的数据页中。

一系列 8KB 的数据页
图 1 - 一系列 8KB 的数据页

2. SQL Server 中的数据存储在一个树状结构中

SQL Server 中的表数据实际上存储在一个类似树的结构中。让我们通过一个简单的例子来理解这一点。考虑下面的 Employees 表:

Employees 表
图 2 - Employees 表

看过我翻译的上一篇文章 【译】SQL 索引是如何工作的 的朋友应该已经猜的八九不离十了。

3. 数据实际存储在哪里

它存储在一系列数据页中,这些数据页的树形结构如下所示。

这种树状结构称为:

这 3 个名字的意思是一样的。

聚集索引结构
图 3 - 聚集索引结构

这实际就是我翻译的上一篇文章的聚集索引结构。

4. SQL Server 如何通过 ID 找到一个数据行

这部分在我翻译的上一篇文章中已经包含了(【译】SQL 索引是如何工作的 - SQL Server 是如何通过 ID 查到数据行的?),这里不再翻译。