文档介绍:数据库的物理存储结构
㈠页(Page)
SQL Server中存储数据的最小单位,每一个页的大小是8KB(8192字节)。每一个页的前96个字节是页首,存储一些系统信息:页码、页的类型、页中的可用空间量、拥有此页对象的对象ID。
⑴数据页(Data Page):存储数据记录的数据。但几种大型对象(Large Object,LOB)除外。
varchar(max)←text
nvarchar(max)←ntext
varbinary(max)←image
xml
⑵索引页(Index Page):索引页用来存储索引数据。
⑶文本∕图像页:存储7种大型对象数据以及3种数据记录超过8KB的可变长度数据?
⑷全局分配映射表页与共享全局分配映射表页:存储关于扩展盘区的信息。
⑸可用空间页:存储关于页分配与可用空间的信息。
⑹索引分配映射表页:存储表或索引所使用的扩展盘区的相关信息。
⑺大容量更改映射表页:存储最近一次执行BACKUP LOG命令之后,Bulk操作所修改的扩展盘区的相关信息。
⑻差异更改映射表页:存储最近一次执行BACKUP DATABASE命令之后,所修改的扩展盘区的相关信息。
除了文本/图像页的数据类型之外,表的数据记录中的所有数据都存储在数据页中,数据记录的存储位置会紧跟在页首之后并且依次排列。
一个页可存储多条记录,但是同一条记录不能跨页存储,因此每条数据记录的最大数据量是8086个字节。
数据页
页首
数据记录1
数据记录2
数据记录3
可用空间
3
2
1
数据记录偏移表
【注】数据库的日志文件并不会包含页,日志文件仅会包含一系列的日志记录。
㈡扩展盘区(Extent)
分配给表和索引的单位空间。由8个连续的页构成,大小是64KB。
统一扩展盘区:由某单一对象所拥有。
混合扩展盘区:最多可被8个对象共享。
SQL2005会从各个混合盘区中分配页给一个新的表或索引,等到此表或索引增长到8个页时,再移到专门的统一扩展盘区,除非对某一表创建的索引有足够的数据产生8个页。
㈢数据库文件的组成文件
⑴主要数据文件:*.MDF
包含数据库的初始信息,记录数据库还拥有哪些其他文件,并且被用来存储数据。
master也会记录数据库是由哪些文件组成的。
每个数据库有且只有一个主要数据文件。
⑵次要数据文件:*.NDF
使用次要数据文件的原因有两点:①凭借在不同的物理磁盘上创建次要数据文件并将数据存储其中,在某些状况下此举可提高效率。②主要数据文件可能会超过Windows对单一文件大小的限制。
⑶事务日志文件:*.LDF
包含用来恢复数据库的日志信息。
每一个数据库至少必须拥有一个日志文件。SQL Server会将每个物理日志文件分成数个虚拟日志文件。虚拟日志文件的大小和数量不固定,我们无法指定。
【注】SQL Server2005的文件会拥有两个文件名:逻辑文件名和物理文件名。
㈣文件组(Filegroup)
基于管理与数据分配的目的,SQL Server允许将多个文件归纳为同一组,并赋予此组一个名称,即文件组。
文件组只能包含数据文件,日志文件不能隶属于任何文件组。
⑴主要文件组(Primary Filegroup):包含主要数据文件和无法放进其他文件组的所有文件。包括系统表的所有页。
⑵用户定义文件组(User-Defined Filegroup):在创建一个新的数据库或更改某一现有数据库的设置时,特别要求创建的文件组便是用户定义文件组。
⑶默认文件组(Default Filegroup):除非特别指定,否则主要文件组将是默认文件组(系统默认PRIMARY) 。改变默认文件组会使得在创建时未指定所属文件组的表和索引被分配给新的默认文件组中的数据文件,但是系统对象和系统表仍会留在主要文件组中。
将数据添加到文件组中的各个文件时,会采取等比的填充策略。但文件全部被填满后,一次只会加大一个文件的大小,第一个文件填满后再加大第二文件。
数据文件和文件组绝对不能与日志文件存储在相同的物理磁盘上。
创建数据库
方法一:SQL Server Management Studio
方法二:SMO(SQL Management Object)
方法三:Transact-SQL的CREATE DATABASE表达式
⒈打开SQL Server Management Studio。
⒉连接到服务器。
⒊展开数据库引擎实例。
⒋右击“数据库”项目或任何一个数据库名称,右键"新建数据库……
⒌指定数据库名称、数据库所有者(默认为登录者)、是否启用全文索引、主要数据文件的逻辑名(建议采用默认)、初始大小及增长方式。
⒍指定主要数据文