我想不出为什么我们需要在一个文件组中有多个文件的任何原因。我之所以这么想的原因是我们可以从T-SQL(最终用户)级别控制文件组,但不能从T-SQL(最终用户)级别控制文件组的各个文件。为什么仍然需要文件的任何意见或想法?
提前谢谢,乔治
我想不出为什么我们需要在一个文件组中有多个文件的任何原因。我之所以这么想的原因是我们可以从T-SQL(最终用户)级别控制文件组,但不能从T-SQL(最终用户)级别控制文件组的各个文件。为什么仍然需要文件的任何意见或想法?
提前谢谢,乔治
每个文件组有多个文件仅出于以下原因有用:
有一个“都市传说”,SQL Server 每个文件只使用 1 个线程,因此文件的数量应该与 CPU 的数量相匹配。然而,这是错误的,正如微软在此处所讨论的那样。
从历史上看,还有另一个原因。信不信由你,在 SQL Server 4.2 到 7 的日子里,sql server 有时安装在 FAT32 文件系统上,它有 4 gig 文件的限制。将文件链接在一起(在我们现在称为文件组中)的能力是一种解决文件系统限制并允许在基于 FAT 的安装上大于 4gigs 的 DB 的方法。
旧线程,我知道,但这对我来说是有意义的:过去 Windows 文件系统 FAT32 中的最大文件大小为 2GB。如果你的数据库文件变大了,你就完蛋了(曾经用 MS Access-Database 发生在我身上)。因此他们允许定义最大文件大小(例如:2GB)并且您可以添加更多文件。如果您的数据库增长并且超过了最大大小,则下一个文件将被填充,直到该文件已满,依此类推。所有这些文件都可以作为一个文件组来寻址。您可以通过选择文件组来定义表数据位置,但是您看不到 tabledata 将在该文件组中的哪个文件中结束。您所知道的是,您的表数据可以最终出现在文件组中的任何文件中。通过这种“拆分”,您的文件系统永远不会看到大于最大文件大小的文件(此处:2GB)尽管您的数据库中的表可以大很多倍。今天,设置多个文件对于将大型数据文件“切碎”成较小的部分以进行基于文件的备份很有用(询问您的网络管理员他们想要什么,因为在备份期间将大型(如 1TB)文件写入分区需要很长时间,即使在快速RAID。所有其他写入操作都需要等待很长时间。较短的等待间隔让高优先级的操作更快地执行)。如果您关心同一个表的并行访问,请考虑水平分区,如 所有其他写入操作都需要等待很长时间。更短的等待间隔让高优先级的操作更快地执行)。如果您关心同一个表的并行访问,请考虑水平分区,如 所有其他写入操作都需要等待很长时间。更短的等待间隔让高优先级的操作更快地执行)。如果您关心同一个表的并行访问,请考虑水平分区,如http://msdn.microsoft.com/en-us/library/ms188730%28v=sql.105%29.aspx。这允许将表的数据分布在不同的硬盘上,例如“磁盘 R: 上的所有 1 月销售额”、“磁盘 S: 上的 2 月所有销售额”,而无需创建单独的表。在对表进行分区的过程中,您可以定义哪个部分应该进入哪个文件组。
我可以提供很长的解释,但 MSDN在这里做得很好。可能您特别不需要在一个文件组中拥有多个文件,但并非所有人都如此。