データベース管理者にとっての課題の1つに、テーブルやインデックスなどのデータベースオブジェクトに割り当てられる物理領域の管理があります。SQL Server 7.0以降では、データファイルとログファイルは、最初に指定されたサイズから自動的に増加(自動拡張)します。データベースを作成するとき、データベースのプロパティで、データファイルとログファイルの1回の増加量を現在のサイズに対する比率か、またはMbytes単位で指定できます。
この設定により、データがファイル容量いっぱいになるたびに、データベースの作成時に設定した増加量だけファイルサイズが自動拡張します。また、SQL Server 6.5までは、データベースに空き領域がなくなると、領域を追加するまで、データベースが運用不能になりました。
多くのデータベース管理システムは、データベースを拡張することはしても、縮小することはありませんでした。縮小することは、簡単で当たり前のようにも思えますが、実のところ非常に複雑です。SQL Server 2000では、バックグラウンドで使い終わった領域を整理して、物理的にページを元に戻し、データベース構造を小さくすることもできます。
SQL Server Desktop Edition以外は、既定でこの自動圧縮の設定は無効になっています。この設定を有効にするには、データベースのプロパティで、[オプション]タブを選択し[自動圧縮]を選択します。
[自動圧縮]オプションを設定したデータベースは圧縮の対象になるため、データベースの圧縮処理プロセス(ID6)が、30分間隔でデータベースのサイズをチェックするようになります。ファイルサイズの25%を超える領域が未使用の場合、ファイル圧縮の対象になり、ファイルの領域の25%が未使用になるサイズ、または作成時のファイルのサイズのどちらか大きい方のサイズまで縮小されます。また、データベースが単純(シンプル)復旧モデルに設定されている場合や、ログのバックアップが作成されている場合にのみ、トランザクションログのサイズも縮小されます。読み取り専用に設定されたデータベースは縮小することはできません。
データベースの自動拡張と自動圧縮の機能は、データベース管理者にとって、ディスク管理の負荷を下げるものではありますが、この自動拡張と自動圧縮が行われると、ディスクへのIOが発生するため、一時的にパフォーマンスの低下が発生します。ですから、できれば現在および将来にわたり必要とされる適正なデータベースサイズを見積もり、必要以上に自動拡張や自動圧縮が行われないように管理することも重要です。必要なデータベースサイズとデータが増加する、または減少する量が分かっていれば、自動拡張や自動圧縮が行われる前に、手動でのサイズ変更を業務時間外などで計画的に行うことができます。
では、データベースサイズは、どのように見積もるべきでしょう。大まかにいえば、テーブルに格納されるデータのサイズとインデックスのサイズを合計したものがデータベースのサイズといえます。計算方法は、SQL ServerのBooks Online(最新版はSQL Server 2000ダウンロードページから入手できます)で、「データベースのサイズの見積もり」を検索して確認してください。
ディスクの空き状況を一定期間監視したい場合、Windowsのコントロールパネルで[管理ツール]から[パフォーマンス]を選択して、以下をパフォーマンスオブジェクトとカウンタとして登録し、データベースが置かれたドライブをインスタンスから選択すればよいでしょう。
パフォーマンスオブジェクト | カウンタ |
---|---|
LogicalDisk | Free Megabytes |
データベースが置かれたディスクは、最低でも85%以上の空き領域があることが推奨されます。[パフォーマンスログと警告]を使用し、ディスクの空きが85%以下になった場合、メッセージの送信、プログラムの実行、アプリケーションイベントログへのエントリの作成などを行うように設定できます。(次ページに続く)
Copyright © ITmedia, Inc. All Rights Reserved.