SQL Server数据库存储文件类型:数据文件和日志文件。数据文件以页面作为存储单元存储数据。
页面:即数据页面,数据页(Page)。是系统在磁盘间中分配的一段大小为8k的连续空间。
文件头(File Header):每个文件的第0页记录叫文件头,记录引导信息。
扩展:每8个数据页(64k)的组合形成扩展区(Extent),简称扩展,也叫盘区。扩展是SQL Server默认的存储分配单位。
堆:全部数据页的组合形成堆(Heap)。
扩展类型:混合扩展(Mixed Extent)(也叫混合盘区)和一致扩展(Uniform Extent)(也叫统一盘区)。
混合扩展(Mixed Extent):扩展区中既包含了空间页面又包括了数据或索引页面时,称为混合扩展。每张表都以混合扩展开始。
一致扩展(Uniform Extent):只存储同一对象,该对象拥有整个扩展。专门保存数据及索引信息。
创建表后,先在混合扩展中分配数据页面,当数据超过8个页面时,再从一致扩展中分配数据页面。
系统为什么要提供混合扩展和一致扩展?
因为以扩展作为存储分配单位的话,可以减少频繁的IO读写,提高数据库性能,但同时又引入了一个新的问题,那就是,当存储数据不足8k时也会分配一个扩展,这样会浪费存储空间,降低空间分配效率。为解决这个问题,系统提供了混合扩展和一致扩展。
空间页面:负责数据空间的分配和管理。包含三种类型的页面文件。
PFS页面(Page free space):记录一个页面是否已分配、位于混合扩展还是一致扩展以及页面上还有多少可用空间等信息。
GAM页面(Global allocation map)和SGAM页面(Secodary global allocation map):用来记录空闲的扩展或含有空闲页面的混合扩展的位置。
数据页面:负责管理表或索引。包含四种类型的页面文件。
IAM页:Index Allocation Map,索引分布映像页。IAM页从混合扩展中分配。记录了8个初始页面的位置和所有扩展区的位置,每个IAM页面能管理512,000个数据页面。超过512,000时,还可以增加更多的IAM页。
数据页:保存大小不超过8k的非文本/图像类型的数据。
文本/图像页:保存超过8K容量的文本或图像类型数据。
索引页:保存的是与索引结构相关的数据信息。