多个文件组与单个文件组中的多个文件

Cap*_*ock 5 sql-server filegroups sql-server-2016

从我在线阅读的内容来看,与在单个文件组中包含多个文件相比,多个文件组似乎只有两个优势:

  1. 能够将特定表隔离到特定驱动器 - 实现此目的的唯一方法是在目标驱动器上添加一个包含文件的新文件组,然后将表移到那里。

  2. 可以通过使用只读文件组进行零碎恢复来加快恢复速度。

与单个文件组中的多个文件相比,多个文件组还有其他优势吗?我对性能优势最感兴趣,但欢迎任何想法。

小智 6

文件组中的多个文件和多个文件组都是管理数据库的工具。第一个可以让您管理 IO,两个都可以让您管理备份。

可以备份数据库的单个文件以及单个文件组。如果您计划在某处恢复事务日志,请务必在执行此操作时备份事务日志的尾部。

数据库文件允许多核 CPU 向数据库提供多个读/写流,而不会达到更高的磁盘排队值。

将文件组视为逻辑分区并将文件视为物理分区可能会有所帮助。如果您有多个文件组,您将自动拥有多个文件,因为一个文件只能属于一个文件组。它还可以帮助(如果您的服务器上有足够的核心)在文件组中包含多个文件。这可以让您两全其美。您将数据库对象分配给文件组而不是文件。您可以将文件放在不同的物理磁盘阵列上。当我第一次开始做数据库工作时,众所周知,将数据和日志放在不同的磁盘上。如果您有预算,您可以将非聚集索引放在另一个磁盘上。如今,SAN 技术无处不在,要实现这一点已经很困难了。然而,SAN 是一种管理工具而不是性能工具。

正如您所指出的,拥有不同的文件组将允许您将高流量表彼此隔离以及与低流量表隔离。它还将为您提供有限的额外保护,防止数据库损坏,从而可能将数据损坏限制为一小部分数据。