SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

データベースに複数のファイルを追加する際の注意点

leave a comment

SQL Server のデータベースは複数のデータファイルで構成することが可能です。
GUI から作成したスクリプトを実行したところ、少しはまったのでその注意点などを。

SSMS の操作は [スクリプト] ボタンから操作内容をスクリプトに出力することができます。
データファイルの追加に関してもデータベースのプロパティでファイルを追加することでスクリプトを出力できます。
image

こちらの画像は新規に TEST2 / TEST3 というデータファイルを追加したものになります。
この状態でスクリプトを作成すると以下のようなスクリプトが生成されます。
image

追加したファイル単位に ALTER DATABASE が作成されます。
ファイルの瞬時初期化が有効になっていれば複数の ALTER 文が実行されても瞬時で終了するので問題はないのですが、瞬時初期化が有効でない場合はデータファイルを追加したタイミングでファイルの初期化が行われます。

複数の ALTER 文でファイルの追加を行うと、各ファイルの追加がシーケンシャルに処理されるため、かなり時間がかかってしまいます。
ADD FILE は、複数のファイルを一つの ALTER 文で実行することができます。
ALTER DATABASE の File および Filegroup オプション (Transact-SQL)

構文としては以下のように ADD FILE をカンマ区切りで複数ファイルを指定します。
image

一つの ALTER 文で複数のファイルを追加することで各ファイルの作成が並列で実行されるようになります。
ALTER DATABASE はデータベースに対してのロックが取得されるため、複数のセッションで ADD FILE を実行しようとしてもブロッキングが発生してしまい、並列でファイルを追加するためには一つの ALTER 文で実行する必要が出てきます。
設定を変更する MODIFY に関しては単一で複数の指定が許可されていないため、ファイル単位に ALTER DATABASE を記述する必要がありますが、ファイルの追加に関しては複数のディスクに分かれているのであれば、並列で実行したほうが効率が良いと思います。

Share

Written by Masayuki.Ozawa

2月 13th, 2013 at 12:39 am

Posted in SQL Server

Tagged with

Leave a Reply