2.1 SQL Server数据库文件组成

SQL Server数据库文件组成

摘要:本文说明了SQL Server数据库的文件组成结构,文件组概念

数据库文件组成

主数据文件(*.mdf)

  • 主要数据文件的建议文件扩展名是 .mdf 。
  • 主要数据文件包含数据库的启动信息,并指向数据库中的其他文件,存储部分或全部的数据。用户数据和对象可存储在此文件中,也可以存储在次要数据文件中。
  • 每个数据库有一个主要数据文件。
  • mdf 文件并非普通文件,因此不借助相应软件是无法打开 mdf 文件的。打开 mdf 文件的常用虚拟光驱软件主要有:Daemon Tools 、东方光驱魔术师等。

次要数据文件 (*. ndf )

  • 次要数据文件的建议文件扩展名是 . ndf 。
  • 次要数据文件是可选的,由用户定义并存储用户数据,用于存储主数据文件未能存储的剩余数据和一些数据库对象。
  • 通过将每个文件放在不同的磁盘驱动器上,次要文件可用于将数据分散到多个磁盘上。
    如果数据库超过了单个 Windows 文件的最大大小,可以使用次要数据文件,这样数据库就能继续
    增长。

事务日志 (*. ldf)

  • 事务日志的建议文件扩展名是 . ldf 。
  • 事务日志文件保存用于恢复数据库的事务日志信息。数据库的插入、删除、更新等操作都会记录在日志文件中,而查询不会记录在日志文件中。整个的数据库有且仅有一个日志文件。
  • 每个数据库必须至少有一个日志文件。

文件组

不同的文件可以存分布到不同的物理硬盘上,这样便于分散硬盘IO,提高数据的读取速度。
数据文件的组合,称作文件组(File Group),数据库不能直接设置存储数据的数据文件,而是通过文件组来指定。

文件和文件组的关系

SQL Server 的数据存储在文件中,文件是实际存储数据的物理实体,文件组是逻辑对象, SQL Server 通过文件组来管理文件。

一个数据库有一个或多个文件组,其中主文件组(Primary File Group)是系统自动创建的,用户可以根据需要添加文件组。
每一个文件组管理一个或多个文件,其中主文件组中包含主要数据文件(*. mdf ),主文件组中也可以包含次要数据文件 。(主要数据文件是系统默认生成的,并且在数据库中是唯一的;次要数据文件是用户根据需要添加的。)除了主文件组之外,其他文件组只能包含辅助文件。

如下示例数据库,系统已自动创建主文件组 PRIMARY,勾选 Default 表示将主文件组设置为默认文件
组,即如果在 create table 和 create index 时没有指定 FileGroup 选项,那么 SQL Server 将使用默认的 PRIMARY 文件组来存储数据。

文件组是一个逻辑实体,实际上,数据存储在文件中( .mdf和.ndf )中,每一个文件组中都包含文
件,如下图:

由上图可以看到,数据库文件的元数据:

  • Logical Name – 数据库数据文件的逻辑名称,用于数据压缩DBCC ShrinkFile等;
  • File Type – 文件类型,有两种:Rows Data(存储数据)和 Log(存储日志);
  • Size – 文件初始大小;
  • Autogrowth/Maxsize – Autogrowth 表示文件自动增加的步长;
  • Maxsize 表示文件大小的最大值限制;
  • Path – 文件存放路径;
  • File Name – 文件的物理名称,逻辑名称和物理名可以不同 。

文件组的优缺点

优点

通常情况下,小型的数据库并不需要创建多个文件来分布数据。但是随着数据的增长,使用单个文件的弊端就开始显现。

首先:使用多个文件分布数据到多个硬盘中可以极大的提高IO性能.

  • 对于单分区表,数据只能存到一个文件组中。如果把文件组内的数据文件分布在不同的物理硬盘上,那么SQL Server能同时从不同的物理硬盘上读写数据,把IO负载分散到不同的硬盘上。
  • 对于多分区表,每个分区使用一个文件组,把不同的数据子集存储在不同的磁盘上,SQL Server在读写某一个分组的数据时,能够调用不同的硬盘IO。

其次:多个文件对于数据略多的数据库来说,备份和恢复都会轻松很多.

从用户的角度来说,创建对象时需要指定存储文件组的只有三种数据对象:表,索引和大对象(LOB)。 

SQL Server根据每个文件设置的初始大小和增量值自动分配新加入的空间,假设在同一文件A设置的大小为文件B的两倍,新增一个数据占用3页,则按比例将2页分配到文件A中,1页分配到文件B中

缺点

显而易见,使用多文件需要占用更多的磁盘空间。这是因为每个文件中都有自己的一套B树组织方式,和自己的增长空间。当然了,还有一套自己的碎片-.-但是在大多数情况下,多占点磁盘空间带来的弊端要远远小于多文件带来的好处.

posted @ 2022-07-21 18:39  平元兄  阅读(1021)  评论(1编辑  收藏  举报