В соответствии со стандартными рекомендациями ГИС по хранению файлы журналов и индексов предпочтительно хранить отдельно от векторных и табличных бизнес-таблиц. В целях повышения производительности лучше располагать бизнес-таблицы, таблицы объектов и таблицы пространственного индекса отдельно, а файлы данных FileGroup – на основе шаблонов их применения. В мультиверсионных базах геоданных с высокой активностью работы по редактированию VERSIONS FileGroup файлы баз данных могут быть разделены и рассредоточены по доступным дискам, что позволяет уменьшить риски возникновения конфликтов на входе/выходе.
В следующей таблице указаны рекомендуемые для создания FileGroups для хранения пространственных объектов и таблиц.
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 МБ, FileGroups будут создаваться без задержек. Затем можно изменить размер файлов данных во избежание фрагментации.
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