NDFファイルの基礎知識から応用まで:SQL Serverデータベースの管理を効率化
NDF ファイルとは?
NDF ファイルの役割:
- データ ストレージの拡張: プライマリ MDF ファイルが一杯になった場合、NDF ファイルを追加することで、データベースにデータを格納する領域を拡張できます。
- I/O パフォーマンスの向上: NDF ファイルを別のディスク ドライブに分散配置することで、ディスク I/O 操作を分散させ、データベースのパフォーマンスを向上させることができます。
- 可用性の向上: NDF ファイルをミラーリングすることで、データの冗長性を確保し、データベースの可用性を向上させることができます。
SQL Server は、MDF ファイルと NDF ファイルを論理データベースとして扱い、ユーザーにとって単一のデータベースとして見えます。データは、MDF ファイルと NDF ファイル全体に分散して格納されます。SQL Server は、データにアクセスし、処理する際、これらのファイル間を透過的に処理します。
- 拡張性: データベースのニーズに合わせて簡単にストレージを拡張できます。
- パフォーマンス: I/O パフォーマンスを向上させることができます。
- 可用性: データの冗長性を確保し、可用性を向上させることができます。
- 管理性: データベース全体を単一のユニットとして管理できます。
- 複雑性: データベースの設計と管理が少し複雑になります。
- ディスク領域: NDF ファイルには追加のディスク領域が必要です。
- メンテナンス: NDF ファイルは、MDF ファイルと同様に定期的にバックアップとメンテナンスを行う必要があります。
- 大規模なデータベース: 大量のデータを格納する必要がある場合は、NDF ファイルを使用してストレージを拡張できます。
- ミッション クリティカルなデータベース: データベースの可用性が極めて重要な場合は、NDF ファイルを使用してデータの冗長性を確保できます。
- パフォーマンスが重要なデータベース: データベースのパフォーマンスが重要な場合は、NDF ファイルを使用して I/O パフォーマンスを向上させることができます。
NDF ファイルを作成するサンプル コード
USE MyDatabase;
GO
CREATE DATABASE MyDatabase
ON PRIMARY (
NAME = N'MyPrimaryFile.mdf',
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\MyPrimaryFile.mdf',
SIZE = 10MB,
MAXSIZE = 200MB,
FILEGROWTH = 10MB
)
FILEGROUP = MyDataFileGroup
(
NAME = N'MyDataFile.ndf',
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\MyDataFile.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
)
LOG ON (
NAME = N'MyLogFile.ldf',
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\MyLogFile.ldf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
);
GO
このコードの説明:
USE MyDatabase;
: このステートメントは、現在の作業データベースをMyDatabase
に設定します。CREATE DATABASE MyDatabase
: このステートメントは、MyDatabase
という名前の新しいデータベースを作成します。ON PRIMARY
: この句は、プライマリ データ ファイルの定義を開始します。NAME = N'MyPrimaryFile.mdf'
: このオプションは、プライマリ データ ファイルの名前をMyPrimaryFile.mdf
に設定します。FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\MyPrimaryFile.mdf'
: このオプションは、プライマリ データ ファイルの物理的な場所を指定します。SIZE = 10MB
: このオプションは、プライマリ データ ファイルの初期サイズを 10 MB に設定します。FILEGROUP = MyDataFileGroup
: この句は、セカンダリ ファイル グループの定義を開始します。LOG ON
: この句は、トランザクション ログ ファイルの定義を開始します。GO;
: このステートメントは、SQL Server にコマンドを実行するように指示します。
NDF ファイルを作成するその他の方法
SQL Server Management Studio (SSMS) を使用する:
- SSMS を開き、データベースサーバーに接続します。
- オブジェクト エクスプローラーで、作成するデータベースを展開します。
- ファイル ノードを右クリックし、新しいファイル > データ ファイル を選択します。
- ファイル名、物理ファイル名、初期サイズ、最大サイズ、ファイル拡張速度 などのファイルのプロパティを設定します。
- ファイル グループ ドロップダウン リストから、NDF ファイルを格納するファイル グループを選択します。
- 追加 をクリックして、NDF ファイルをデータベースに追加します。
- OK をクリックして、CREATE DATABASE ステートメントを実行します。
T-SQL スクリプトを使用する:
以下の T-SQL スクリプトを使用して、NDF ファイルを作成することもできます。
ALTER DATABASE MyDatabase
ADD FILEGROUP MyDataFileGroup
CONTAINING FILE N'MyDataFile.ndf'
ON (
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\MyDataFile.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
);
GO
データベース スナップショットを使用する:
既存のデータベースのスナップショットを作成し、そのスナップショットを新しいデータベースとして復元することで、NDF ファイルを作成することもできます。この方法は、データベースの構造とデータを迅速かつ簡単にコピーする場合に役立ちます。
注意事項:
- NDF ファイルを作成する前に、データベースの十分な空きディスク容量があることを確認してください。
- NDF ファイルを複数のディスク ドライブに分散配置すると、パフォーマンスを向上させることができます。
これらの方法は、それぞれ異なる利点と欠点があります。ニーズに合った方法を選択してください。
sql-server database database-administration