您所在的位置: 首页>>读书频道>>数据库>>SQL Server>>

6.2.2 数据文件的结构

http://book.51cto.com  2008-04-02 15:07  周 涛 吕伟臣 夏永和 编著  清华大学出版社  我要评论(0)
  • 摘要:《SQL Server 2005数据库基础应用》本书以实例为中心,设计了许多企业日常应用中遇到的数据库问题,并指导读者循序渐进地寻找答案,从而培养读者解决实际问题的能力。第六章主要说的是SQL Server 2005数据库管理系统的主要功能是帮助用户有组织地和高效地管理各种不同类型的数据。本文说的是数据文件的结构。
  • 标签:SQL  Server  SQL Server 2005数据库基础应用

6.2.2  数据文件的结构

数据文件的结构按照层次可以划分为分页和区。

1. 页的概念

页是SQL Server中数据存储的基本单位。为数据库中的数据文件分配的磁盘空间可以从逻辑上划分成带有连续编号的页(编号从 0开始)。磁盘I/O操作在页级执行,SQL Server 读取或写入的是所有的数据页。

页的尺寸是8KB。每页的开头是96B的页头,在页头存储页码、页类型、页中的可用空间以及拥有此页对象的ID等有关页的系统信息。

数据文件中的页有8种类型。

Data(数据):用于存储数据行的数据,但不能存储大型数据对象(LOB)。
Index(索引):用于存储索引条目。
TEXT/IMAGE(文本/图像):用于存储TEXT、NTEXT、IMAGE、NVARCHAR(max)、VARCHAR(max)、VARBINARY(max) 和 XML等类型的大型对象数据类型以及数据行大小超过8KB的可变长度数据类型(包括VARCHAR、NVARCHAR、VARBINARY和sql_variant)。
Global Allocation Map(全局分配表)和Shared Global Allocation Map(共享全局映射表):用于存储有关区是否分配的信息。
Page Free Space(页可用空间):用于存储页分配和页可用空间的信息。
Index Allocation Map(索引分配映射表):用于存储每个分配单元中表或索引所使用的区的信息。
BULK Changed Map(大容量更改映射表):用于存储最后一条BACKUP LOG语句执行之后,每个分配单元中大容量操作所修改的区的信息。
Differential Changed Map(差异更改映射表):用于存储最后一条BACKUP DATABASE 语句执行后,每个分配单元中更改的区的信息。
在SQL Server中,同一个数据行中的数据不能存储在不同的页中——即页中单个行的最大数据量不能超过8060字节(除了Text/Image中保存的数据类型外),但是一行的部分数据却可以移出行所在的页而被分开存储,当表中的所有固定列和可变列的行的总大小超过限制的8060字节时,SQL Server 将从最大长度的列开始动态地将一个或多个可变长度列移动到ROW_OVERFLOW_DATA分配单元中的页。

2. 区的概念

区是SQL Server分配给表和索引的基本单位。一个区是8个物理上连续的页(即64 KB)。区有两种类型。

统一区:统一区只能由一个单一的对象拥有,其中的8个页只能用来存储这个对象的数据。

混合区:混合区最多可以被8个对象共享,区中的8个页可以分给不同的对象。

通常情况下,应该从混合区向新表或索引分配页。当表或索引增长到8页时,将使用统一区进行后续分配。如果对现有表创建索引,并且该表包含的行足以在索引中生成8页,则对该索引的所有分配都使用统一区进行。

【责任编辑:董书 TEL:(010)68476606】

回书目   上一节   下一节
上一篇: 6.2.1 数据文件 下一篇: 6.2.3 文件组
深入SQL Server 2008
如何有效防御SQL注入攻击
Sun以10亿美元并购开源数据库厂商MySQL
Windows Home Server 家用服务器专题
Windows Server 2008专题
 
 验证码: (点击刷新验证码)   匿名发表
  • Visual C++ 完全自学宝典

  • 作者:强锋科技,朱洪波
  • Visual C++ 6.0是微软公司为程序人员提供的Visual Studio 6.0工具套件中的重要组成部分。本书由浅入深地介绍使用Visual C++ 6.0..
Copyright©2005-2008 51CTO.COM 版权所有