标准 GIS 存储建议倾向于将索引和日志文件与矢量和表格业务表分开保存。出于性能方面的考虑,最好分开放置业务、要素和空间索引表,并根据文件组数据文件的使用模式对其进行放置。对于多版本化且非常活跃的编辑地理数据库,VERSIONS 文件组的数据库文件可能是分开的并分布于各个可用磁盘中,从而避免出现输入/输出争用情况。
下表列出了为存储要素和表而建议创建的文件组。
FILEGROUP | CONFIGURATION KEYWORD_PARAMETER |
---|---|
NIS_BDATA | Business table |
NIS_BINDEX | Business table index |
NIS_SDATA | Spatial Index table |
NIS_SINDEX | Spatial Index table index |
NIS_ADATA | Adds table (versioned) |
NIS_AINDEX | Adds table index |
NIS_DDATA | Deletes table (versioned) |
NIS_DINDEX | Deletes table index |
NIS_XMLDOC | XML documents |
NIS_XMLIDX | XML documents indexes |
NIS_SDEDICT | Data dictionary |
NIS_SDEDICTINDEX | Data dictionary index |
The following script can be run in SQL Management Studio to add FileGroups.
USE MASTER
GO
ALTER DATABASE [nisbd] ADD FILEGROUP [NIS_BDATA]
GO
ALTER DATABASE [nisbd] ADD FILE (NAME = N'nis_Bdata01', FILENAME = N'C:\mssql\data\nisdb\nis_Bdata01.NDF' , SIZE = 1, MAXSIZE = 800, FILEGROWTH = 1) TO FILEGROUP [NIS_BDATA]
GO
ALTER DATABASE [nisbd] ADD FILEGROUP [NIS_BINDEX]
GO
ALTER DATABASE [nisbd] ADD FILE (NAME = N'nis_Bindex01', FILENAME = N'C:\mssql\data\nisdb\nis_Bindex01.NDF' , SIZE = 1, MAXSIZE = 800, FILEGROWTH = 1) TO FILEGROUP [NIS_BINDEX]
GO
ALTER DATABASE [nisbd] ADD FILEGROUP [NIS_SDATA]
GO
ALTER DATABASE [nisbd] ADD FILE (NAME = N'nis_Sdata01', FILENAME = N'C:\mssql\data\nisdb\nis_Sdata01.NDF' , SIZE = 1, MAXSIZE = 800, FILEGROWTH = 1) TO FILEGROUP [NIS_SDATA]
GO
ALTER DATABASE [nisbd] ADD FILEGROUP [NIS_SINDEX]
GO
ALTER DATABASE [nisbd] ADD FILE (NAME = N'nis_Sindex01', FILENAME = N'C:\mssql\data\nisdb\nis_Sindex01.NDF' , SIZE = 1, MAXSIZE = 800, FILEGROWTH = 1) TO FILEGROUP [NIS_SINDEX]
GO
ALTER DATABASE [nisbd] ADD FILEGROUP [NIS_ADATA]
GO
ALTER DATABASE [nisbd] ADD FILE (NAME = N'nis_Adata01', FILENAME = N'C:\mssql\data\nisdb\nis_Adata01.NDF' , SIZE = 1, MAXSIZE = 800, FILEGROWTH = 1) TO FILEGROUP [NIS_ADATA]
GO
ALTER DATABASE [nisbd] ADD FILEGROUP [NIS_AINDEX]
GO
ALTER DATABASE [nisbd] ADD FILE (NAME = N'nis_Aindex01', FILENAME = N'C:\mssql\data\nisdb\nis_Aindex01.NDF' , SIZE = 1, MAXSIZE = 800, FILEGROWTH = 1) TO FILEGROUP [NIS_AINDEX]
GO
ALTER DATABASE [nisbd] ADD FILEGROUP [NIS_DDATA]
GO
ALTER DATABASE [nisbd] ADD FILE (NAME = N'nis_Ddata01', FILENAME = N'C:\mssql\data\nisdb\nis_Ddata01.NDF' , SIZE = 1, MAXSIZE = 800, FILEGROWTH = 1) TO FILEGROUP [NIS_DDATA]
GO
ALTER DATABASE [nisbd] ADD FILEGROUP [NIS_DINDEX]
GO
ALTER DATABASE [nisbd] ADD FILE (NAME = N'nis_Dindex01', FILENAME = N'C:\mssql\data\nisdb\nis_Dindex01.NDF' , SIZE = 1, MAXSIZE = 800, FILEGROWTH = 1) TO FILEGROUP [NIS_DINDEX]
GO
ALTER DATABASE [nisbd] ADD FILEGROUP [NIS_XMLDOC]
GO
ALTER DATABASE [nisbd] ADD FILE(NAME = N'nis_Xmldoc_01', FILENAME = N'D:\mssqldata\nisdb\nis_Xmldoc_01.NDF' , SIZE = 1, MAXSIZE = 800, FILEGROWTH = 1) TO FILEGROUP [NIS_XMLDOC]
GO
ALTER DATABASE [nisbd] ADD FILEGROUP [NIS_XMLINDEX]
GO
ALTER DATABASE [nisbd] ADD FILE(NAME = N'nis_Xmlindex_01', FILENAME = N'D:\mssqldata\nisdb\nis_Xmlindex_01.NDF' , SIZE = 1, MAXSIZE = 800, FILEGROWTH = 1) TO FILEGROUP [NIS_XMLINDEX]
GO
ALTER DATABASE [nisbd] ADD FILEGROUP [NIS_SDEDICT]
GO
ALTER DATABASE [nisbd] ADD FILE(NAME = N'nis_Sdedict_01', FILENAME = N'D:\mssqldata\nisdb\nis_Sdedict_01.NDF' , SIZE = 1, MAXSIZE = 800, FILEGROWTH = 1) TO FILEGROUP [NIS_SDEDICT]
GO
ALTER DATABASE [nisbd] ADD FILEGROUP [NIS_SDEDICTINDEX]
GO
ALTER DATABASE [nisbd] ADD FILE(NAME = N'nis_Sdedictindex_01', FILENAME = N'D:\mssqldata\nisdb\nis_Sdedictindex_01.NDF' , SIZE = 1, MAXSIZE = 800, FILEGROWTH = 1) TO FILEGROUP [NIS_SDEDICTINDEX]
GO
通过将数据文件的初始大小设置为 1 MB,以避免在创建文件组时发生延迟。然后,可以重新调整数据文件的大小以避免产生碎片。
ALTER DATABASE [NISDB] MODIFY FILE ( NAME = N'nis_Bdata01', SIZE = 400MB )
ALTER DATABASE [NISDB] MODIFY FILE ( NAME = N'nis_Bindex01', SIZE = 400MB )
ALTER DATABASE [NISDB] MODIFY FILE ( NAME = N'nis_Sdata01', SIZE = 400MB )
ALTER DATABASE [NISDB] MODIFY FILE ( NAME = N'nis_Sindex01', SIZE = 400MB )
ALTER DATABASE [NISDB] MODIFY FILE ( NAME = N'nis_Adata01', SIZE = 400MB )
ALTER DATABASE [NISDB] MODIFY FILE ( NAME = N'nis_Aindex01', SIZE = 400MB )
ALTER DATABASE [NISDB] MODIFY FILE ( NAME = N'nis_Ddata01', SIZE = 400MB )
ALTER DATABASE [NISDB] MODIFY FILE ( NAME = N'nis_Dindex01', SIZE = 400MB )
ALTER DATABASE [NISDB] MODIFY FILE ( NAME = N'nis_Xmldoc_01', SIZE = 400MB )
ALTER DATABASE [NISDB] MODIFY FILE ( NAME = N'nis_Xmlindex_01', SIZE = 400MB )
ALTER DATABASE [NISDB] MODIFY FILE ( NAME = N'nis_Sdedict_01', SIZE = 400MB )
ALTER DATABASE [NISDB] MODIFY FILE ( NAME = N'nis_Sdedictindex_01', SIZE = 400MB )
Use the following to verify FileGroups and data files:
EXEC sp_helpdb nisdb
GO