2.1.2 物理数据库
从数据库管理员角度看,数据库是物理数据库,它存储逻辑数据库的各种对象的实体。在创建数据库时,了解SQL Server如何存储数据也是很重要的,这有助于规划分配给数据库的磁盘容量。
SQL Server 2012所使用的文件包括以下3类文件,通过文件组管理和组织在一起。
1. 数据库文件
(1)主数据文件。主数据文件简称主文件,正如其名字,该文件是数据库的关键文件,包含了数据库的启动信息,并且存储数据。每个数据库必须有且仅能有一个主文件,其默认扩展名为.mdf。
(2)辅助数据文件。辅助数据文件简称辅(助)文件,用于存储未包括在主文件内的其他数据。辅助文件的默认扩展名为.ndf。辅助文件是可选的,根据具体情况,可以创建多个辅助文件,也可以不使用辅助文件。一般当数据库很大时,有可能需要创建多个辅助文件。而当数据库较小时,则只需要创建主文件而不需要创建辅助文件。
(3)日志文件。日志文件用于保存恢复数据库所需的事务日志信息。每个数据库至少有一个日志文件,也可以有多个,日志文件的扩展名为.ldf。日志文件的存储与数据文件不同,它包含一系列记录,这些记录的存储不以页为存储单位。
说明
SQL Server 2012允许在创建数据库时不使用上述的.mdf、.ndf和.ldf作为文件扩展名,但使用默认的扩展名有助于识别文件。
在创建一个数据库后,该数据库至少包含上述的主文件和日志文件。这些文件的名字是操作系统文件名,它们不是由用户直接使用的,而是由系统使用的,不同于数据库的逻辑名。
2. 数据库文件组
文件组是由多个文件组成的,为了管理和分配数据而将它们组织在一起。通常可以为一个磁盘驱动器创建一个文件组,然后将特定的表、索引等与该文件组相关联,那么对这些表的存储、查询和修改等操作都在该文件组中。
使用文件组可以提高表中数据的查询性能。在SQL Server 2012中有两类文件组。
(1)主文件组。主文件组包含主要数据文件和任何没有明确指派给其他文件组的其他文件。管理数据库的系统表的所有页均分配在主文件组中。
(2)用户定义文件组。用户定义文件组是指在CREATE DATABASE或ALTER DATABASE语句中使用FILEGROUP关键字指定的文件组。
每个数据库中都有一个文件组作为默认文件组运行。若在SQL Server 2012中创建表或索引时没有为其指定文件组,那么将从默认文件组中进行存储、查询等操作。用户可以指定默认文件组,如果没有指定默认文件组,则主文件组是默认文件组。
说明
若不指定用户定义文件组,则所有数据文件都包含在主文件组中。
在设计文件和文件组时,一个文件只能属于一个文件组。只有数据文件才能作为文件组的成员,日志文件不能作为文件组成员。
3. FILESTREAM
借助FILESTREAM,基于SQL Server的应用程序可以将非结构化的数据(如文档和图像)存储在文件系统中。应用程序在利用丰富的流式API和文件系统性能的同时,还可保持非结构化数据和对应的结构化数据之间的事务一致性。