每个 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)