13

我本质上是一名开发人员——但时不时地,客户没有像样的 DBA 来处理这些问题,所以我被召唤来决定......

在处理合理大小的 SQL Server 数据库(比 Northwind 或 AdventureWorks 更大的数据库)时,您的策略/最佳实践是什么 - 您是否使用多个文件组?如果有:有多少?为什么?

您决定何时摆脱“一个文件组处理所有内容”方法的标准是什么:

  • 数据库大小?
  • 数据库复杂度?
  • 可用性/可靠性要求?
  • 还有什么?

如果您使用多个文件组,您使用多少个?一个用于数据,一个用于索引,一个用于日志?几个(多少)的数据?您选择的原因是什么 -为什么使用确切数量的文件组:-)

4

6 回答 6

13

Microsoft 培训的最佳实践方法如下:

  • 日志文件放置在单独的物理驱动器上
  • 数据文件放置在单独的物理驱动器上
  • 多个文件组:当特定表非常大时。事务数据库中经常出现这种情况(单独的物理驱动器)
  • 多个文件组:使用范围或想要将查找数据拆分为只读数据库文件(单独的物理驱动器)时

请记住,在存储数据方面,MDF 在技术上与硬盘分区类似。MDF 是随机读取的文件,而 LDF 是顺序读取的文件。因此,将它们分成单独的驱动器会导致巨大的性能增益,除非运行固态驱动器,在这种情况下增益仍然存在。

于 2009-02-13T06:50:08.767 回答
3

在 SQL Server 2008 中拥有多个(至少两个)文件组至少有一个充分的理由:如果您想使用 FILESTREAM 功能,您必须为您的 FILESTREAM 数据提供一个专用的自定义文件组 :-)

马克

于 2009-03-10T21:41:42.260 回答
3

维护多个文件组有助于减少 I/O 负担。它还为您提供了存储灵活性,您可以轻松地备份文件组而不是单个文件,并将它们分成每个文件组的单独磁盘驱动器。

于 2010-03-01T06:14:05.153 回答
1

通常,您应该只有一个主文件组和一个日志文件。

有时当您有非常静态的数据时,您可以创建一个包含此静态数据的SECOND文件组。然后,您可以将文件组设为 READONLY以提高性能。毕竟,这是相当静态的数据。如果您的只读行数较少(例如查找表值),则不值得。但是对于某些东西(例如,仍然可以读入的存档内容),这可能是一个不错的选择。

我从这篇博文中得到了这个想法。

HTH。

于 2009-04-03T02:44:37.950 回答
0

我研究过很多数据库,我们唯一一次使用文件组是当磁盘空间不足时,我们不得不在另一个主轴上创建一个新文件组。我敢肯定这不是理想的原因有很好的性能原因,但这是现实。

于 2009-02-13T06:35:59.750 回答
0

among other reasons additional filegroups make sense if you want to partition a table. and that makes sense if there are many rivaling reads with dissimilar where-conditions of that table. you can configure each partition to reflect one such where-condition and to be located on a different disk, thereby sending each read to another disk, thus parallel reads and less conflict.

于 2013-04-30T10:17:06.890 回答