SQLServer数据库文件组相关知识笔记

SQL Server
328
0
0
2022-03-27

SQLServer数据库文件组相关知识笔记

1、数据库文件组概念

数据库文件被组织在称为“文件组”的逻辑组中。文件组是所创建对象(如表或索引)的目标容器,对象数据将分散在其所在目标文件组的文件中,文件组可以按你要求的方式来控制对象的物理位置。

每个数据库有一个主文件组。主文件组包含主要数据文件和未放入其他文件组的所有次要文件。用户可以创建自定义的文件组,用于将数据文件集合起来,这样以便于后续管理、数据分配和放置。

2、文件组的工作机制

文件组对组内的所有文件都使用按比例填充策略。将数据写入文件组时,数据库引擎会根据文件中的可用空间量将一定比例的数据写入文件组中的每个文件,而不是将所有数据先写满第一个文件,然后再写入下一个文件。例如,如果文件file1有100MB可用空间,文件file2有200 MB可用空间,则从文件f1中分配一个区,从文件f2中分配两个区,依次类推。这样,两个文件几乎同时填满。

如果数据库设置为自动增长,文件组中的所有文件一满,数据库引擎就自动按照循环方式一次扩展一个文件,以容纳更多数据。

3、数据库文件组的作用

改善数据库的性能:允许跨多个磁盘、多个磁盘控制器或RAID (独立磁盘冗余阵列)系统创建数据库。当对数据进行访问时,多个读/写磁头可以同时并行地访问数据。从而加快数据库操作的速度。

可以在特定的文件组中创建表:根据业务的需要,可以将特定表的所有I/O都定向到一个特定的磁盘。从而提高数据库的性能。

4、数据库文件组的设计原则

  • 一个数据库文件或文件组不能由多个数据库使用。
  • 一个数据库文件只能属于一个文件组。
  • 数据和事务日志信息不能放在同一个文件或文件组。
  • 事务日志文件不能属于任何文件组。

5、数据库文件组的使用建议

  • 一般情况下数据库在只有单个数据文件和单个事务日志文件的情况下性能良好。
  • 如果使用多个数据库文件的话,应该为附加的数据库文件创建第二个文件组,并将其设置为默认文件组。这样,主文件将只包含系统表和对象。
  • 要使性能最大化,需要尽可能多的不同的可用本地物理磁盘上创建文件或文件组。将争夺磁盘空间最激烈的对象放在不同的文件组中
  • 使用文件组将对象放置在特定的物理磁盘上。
  • 将在同一链接查询中使用的不同表置于不同的文件组中。由于采用并行磁盘I/O对连接数据进行搜索,可以改善数据库性能。
  • 将最常访问的表和属于这些表的非聚集索引置于不同的文件组中。如果文件位于不同的物理磁盘上,由于采用并行I/O,可以改善数据库性能。
  • 不要将事务日志文件置于其中已有其他文件和文件组的物理磁盘上。