现在我们进行简单的测试:我们插入40000条记录到表。每条记录8K大小。因此我们插入了320MB数据到表。这是我刚才提的轮询调度分配算法,会进行操作:SQL Server会在2个文件间发放数据:第一个文件有160M的数据,第二个文件也会有160M的数据。
-- Insert 40.000 records, results in about 312MB data (40.000 x 8KB / 1024 = 312,5MB)
-- They are distributed in a round-robin fashion between the files in the file group "FileGroup1"
-- Each file will get about 160MB
DECLARE @i INT = 1
WHILE (@i <= 40000)
BEGIN
INSERT INTO Test VALUES
(
REPLICATE('x', 8000)
)
SET @i += 1
END
GO
  接下来你可以在硬盘上看下,你会看到2个文件时同样的大小。
  当你把这些文件放在不同的物理硬盘上,你可以同时访问它们。那是在一个文件组里有多个文件的强大。
  你也可以使用下列脚本获取数据库文件的相关信息。
-- Retrieve file statistics information about the created database files
DECLARE @dbId INT
SELECT @dbId = database_id FROM sys.databases WHERE name = 'MultipleFileGroups'
SELECT
sys.database_files.type_desc,
sys.database_files.physical_name,
sys.dm_io_virtual_file_stats.* FROM sys.dm_io_virtual_file_stats
(
@dbId,
NULL
)
INNER JOIN sys.database_files ON sys.database_files.file_id = sys.dm_io_virtual_file_stats.file_id
GO
  小结
  在的文章里我向你展示了多个文件组和文件组里多个文件是如何让你的数据库更容易管理,还有文件组里的多个文件是如何使用轮询调度分配算法。