知识卡片
表空间的多层逻辑存储结构解决逻辑无限与物理有限的映射问题
内容
关系数据库的逻辑模型允许一张表无限增长,但操作系统的文件系统对 单个文件的大小有硬性上限(如FAT32限制单文件4GB),这个矛盾如果 用”一张表对应一个文件”的朴素方案解决,表一旦超出文件系统上限就 无法继续增长。段页式存储结构(如Oracle采用的方案)用多层逻辑单位 把这个矛盾拆解开:表空间是最外层的逻辑容器,其下由若干段组成 (数据段/索引段/临时段/回滚段,分别对应数据本身/索引/排序连接等 中间结果/事务回滚信息四类不同用途),每个段又由若干区组成,每个 区由若干连续的数据块组成——数据块是逻辑上最小的存取单元,与操作系统 的磁盘文件块按整数倍对应。表空间在物理层面对应一到多个数据文件, 一个表空间可以横跨多个物理文件,这正是突破单文件大小限制的关键: 当表空间需要继续增长、当前数据文件已达上限时,只需要给这个表空间 再挂一个新的数据文件,逻辑上表空间依然是一个连续的整体,物理上却 可以分散在任意多个文件甚至任意多块磁盘上。这套多层映射的本质是 在逻辑连续性和物理文件的硬限制之间插入一层可以自由扩展的中间层, 让上层的关系数据操作完全不需要感知底层文件系统的容量约束。
结构图:
flowchart TD
A[表空间 Tablespace<br/>逻辑上可对应多个物理文件] --> B[段 Segment<br/>数据段/索引段/临时段/回滚段]
B --> C[区 Extent<br/>连续的数据块集合]
C --> D[数据块 Block<br/>逻辑最小存取单元]
D -.按整数倍对应.-> E[磁盘文件块<br/>操作系统最小存取单元]
A -.物理映射.-> F[数据文件1]
A -.物理映射.-> G[数据文件2...N<br/>可分散在不同磁盘]
参考来源
- 位置:《数据库原理(微课版)》第9章《数据库存储与索引》9.1.1节"数据
的存储策略"(源文件:_epub-src/index_split_006.html)
- 结论依据:原文明确"常见的数据存储策略是段页式存储结构,即在逻辑上
将数据存储空间划分为段、区、数据块等多层概念……逻辑结构中的表空间
与数据文件之间是一对多关系,一个表空间可以对应一个到多个物理文件",
因此可以推出多层逻辑结构如何解决逻辑无限大与物理文件有限大小之间
矛盾的结论。
- 原始内容:每个数据库由一个到多个表空间组成,每个表空间又由零到多个
段组成,每个段由一个到多个区组成,每个区又由一个到多个连续的数据块
组成……表空间与数据文件之间是一对多关系,一个表空间可以对应一个到
多个物理文件。