SQL Server 2008 的文件组结构还挺有意思的,尤其是你在做数据库部署或者分区存储的时候,这知识点还蛮实用的。文件组分两种:主文件组用户定义文件组,前者是默认的,系统表啥的都会扔进去;后者就比较灵活了,自己定义、自己管理,用CREATE DATABASEALTER DATABASE 搞定。

主文件组就像是数据库的“老大”,没有明确归属的文件都会跑这来。新建库的时候不管你有没有指定,系统默认就是往主文件组丢。你要是文件多了、表也多了,建议你把一些大表分到用户定义文件组里,读写更灵活,性能也更稳。

用户定义文件组挺适合做归档、分区或者日志分离的。比如你搞一个月度归档的表,就扔到专属的文件组里,这样备份的时候还能单独。嗯,对维护来说还是比较省事的。

文件组的创建用法也挺,像下面这样:

CREATE DATABASE SampleDB
ON PRIMARY
(
  NAME = SampleDB_data,
  FILENAME = 'C:\data\SampleDB_data.mdf'
),
FILEGROUP ArchiveGroup
(
  NAME = Archive_data,
  FILENAME = 'C:\data\Archive_data.ndf'
)

注意,FILEGROUP 关键字用来声明用户定义文件组,写清楚路径和文件名就 OK。

要是你还想深入了解恢复策略、读写权限设置之类的,可以看看下面几个链接,都是干货:

如果你经常接触 SQL Server 相关的性能优化和存储管理,建议好好研究下文件组的设计方式,真的能省不少事。