数据库文件和文件组

每个 SQL Server 数据库至少都有两个作系统文件:数据文件和日志文件。 数据文件包含表、索引、存储过程和视图等数据和对象。 日志文件包含恢复数据库中所有事务所需的信息。 数据文件可以组合在文件组中,以便进行分配和管理。

数据库文件

SQL Server 数据库有三种类型的文件,如下表所示。

文件 DESCRIPTION
主要 主数据文件包含数据库的启动信息,并指向数据库中的其他文件。 用户数据和对象可以存储在此文件或辅助数据文件中。 每个数据库都有一个主要数据文件。 .mdf主数据文件的建议文件扩展名。
次要 辅助数据文件是可选的,是用户定义的,并存储用户数据。 辅助文件可用于通过将每个文件放在不同的磁盘驱动器上,将数据分散到多个磁盘上。 此外,如果数据库超出了单个 Windows 文件的最大大小,则可以使用辅助数据文件,以便数据库可以继续增长。

辅助数据文件的建议文件扩展名为 .ndf。
事务日志 事务日志文件保存用于恢复数据库的日志信息。 每个数据库必须至少有一个日志文件。 事务日志的建议文件扩展名为 .ldf。

例如,可以创建一个名为 Sales 的简单数据库,其中包含一个主文件,其中包含所有数据和对象,以及包含事务日志信息的日志文件。 或者,可以创建一个名为 Orders 的更复杂的数据库,其中包含一个主要文件和五个辅助文件。 数据库中的数据和对象分布在所有六个文件中,四个日志文件包含事务日志信息。

默认情况下,数据和事务日志放置在同一驱动器和路径上。 这是为了处理单磁盘系统而完成的。 但是,这可能不适合生产环境。 建议将数据和日志文件放在单独的磁盘上。

文件组

每个数据库都有一个主文件组。 此文件组包含主数据文件和未放入其他文件组的任何辅助文件。 可以创建用户定义的文件组,以便将数据文件组合在一起,以实现管理、数据分配和放置目的。

例如,可以在三个磁盘驱动器上分别创建三个文件 Data1.ndf、Data2.ndf 和 Data3.ndf,并将其分配给文件组 fgroup1。 然后,可以在文件组 fgroup1 上专门创建表。 表中数据的查询将分布在三个磁盘中;这将提高性能。 可以使用在 RAID(独立磁盘冗余阵列)条带集上创建的单个文件来实现相同的性能改进。 但是,文件和文件组使你可以轻松地将新文件添加到新磁盘。

所有数据文件都存储在下表中列出的文件组中。

文件组 DESCRIPTION
主要 包含主文件的文件组。 所有系统表都分配给主文件组。
用户定义 当用户首次创建或修改数据库时,用户专门创建的任何文件组。

默认文件组

在数据库中创建对象时,不指定它们所属的文件组,则会将其分配给默认文件组。 在任何时候,只指定一个文件组作为默认文件组。 默认文件组中的文件必须足够大,才能容纳未分配给其他文件组的任何新对象。

PRIMARY 文件组是默认文件组,除非使用 ALTER DATABASE 语句进行更改。 系统对象和表的分配保留在 PRIMARY 文件组中,而不是新的默认文件组。

CREATE DATABASE (SQL Server Transact-SQL)

ALTER DATABASE 文件和文件组选项 (Transact-SQL)

数据库分离和附加 (SQL Server)