SQL:SQL Server 物理配置とファイルグループ
2005/08/06
この文書はSQL Server 2000時点をベースに記述されています。
SQL Serverではテーブルやインデックスといったオブジェクトをファイルグループに配置します。
ファイルグループはファイルを複数管理し、物理オブジェクトと論理オブジェクトをつなぐ役割をします。
たとえばテーブルAに、インデックスA、インデックスBを作成してみましょう。
--データベースを作成する CREATE DATABASE [test] ON (NAME = N'test_Data', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_Data.MDF' , SIZE = 1, FILEGROWTH = 10%) LOG ON (NAME = N'test_Log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_Log.LDF' , SIZE = 1, FILEGROWTH = 10%) COLLATE Japanese_CI_AS --ファイルグループとファイルを追加する GO ALTER DATABASE [test] ADD FILEGROUP [FG1] GO ALTER DATABASE [test] ADD FILE(NAME = N'FG1File1', FILENAME = N'C:\temp\db\FG1File1_Data.NDF' , SIZE = 1, FILEGROWTH = 10%) TO FILEGROUP [FG1] GO ALTER DATABASE [test] ADD FILE(NAME = N'FG1File2', FILENAME = N'C:\temp\db\FG1File2_Data.NDF' , SIZE = 1, FILEGROWTH = 10%) TO FILEGROUP [FG1] GO ALTER DATABASE [test] ADD FILEGROUP [FG2] GO ALTER DATABASE [test] ADD FILE(NAME = N'FG2File1', FILENAME = N'C:\temp\db\FG2File1_Data.NDF' , SIZE = 1, FILEGROWTH = 10%) TO FILEGROUP [FG2] GO ALTER DATABASE [test] ADD FILE(NAME = N'FG2File2', FILENAME = N'C:\temp\db\FG2File2_Data.NDF' , SIZE = 1, FILEGROWTH = 10%) TO FILEGROUP [FG2] GO --カレントデータベースを変更する use [test] GO --テーブルを作成する CREATE TABLE [dbo].[TABLE-A] ( [key] [int] NOT NULL , [value] [nvarchar] (100) COLLATE Japanese_CI_AS NULL ) ON [FG1] GO --クラスタ化インデックスを作成する ALTER TABLE [dbo].[TABLE-A] WITH NOCHECK ADD CONSTRAINT [PK_TABLE-A] PRIMARY KEY CLUSTERED ( [key] ) ON [FG1] GO --通常のインデックスをFG2に作成する CREATE INDEX [IX_TABLE-A] ON [dbo].[TABLE-A]([value]) ON [FG2] GO
テーブルなどのオブジェクトは1つのファイルグループにしか属せませんが、インデックスは別のファイルグループに所属させることが可能です。
SQL Server 2005ではパーティション機能が追加されるので、若干変わります。
SQL:SQL Server 2005 パーティション機能とは