- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQLServer2008R2 自動拡張について)
SQLServer2008R2の自動拡張について
このQ&Aのポイント
- SQLServer2008R2での自動拡張の設定によるパフォーマンス劣化について質問します。
- データの追加・削除を繰り返すとデータベースの領域が不足し、自動拡張が行われます。自動拡張されたデータベースはファイルが断片化し、パフォーマンスが劣化します。
- データベース内のまばらなデータを一箇所に集め、無駄な領域を解放するためにはSHRINKFILEを実行する必要があります。さらに、ディスク上でデータベースの物理ファイルが断片化している場合はデフラグを行うことで解消できます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> (1)データの追加・削除を繰り返し、DB領域が不足すると自動 > 拡張が行われる。 これはその通りです。 > (2)自動拡張されたDBは、ファイルが断片化している。また、 > DBをしばらく使うと、DB領域内でデータがまばらに入った > 状態になり、パフォーマンスが劣化する。 一般的に削除や更新が行われるとそうです。 > (3)SHRINKFILEを実行することで、まばらになったデータを > DB内の1箇所に集めて、無駄な領域を開放する。 ここは注意が必要です。 http://msdn.microsoft.com/ja-jp/library/ms190488.aspx によれば、 「圧縮操作では、データベース内のインデックスの断片化状態は 保持されず、一般に、断片化の程度が大きくなります。この理由 からも、データベースを繰り返し圧縮することはお勧めできませ ん。」 とあります。 インデックスの再作成などを行わないと、パフォーマンスが逆に 劣化する可能性もあります。 また、「DBCC SHRINKFILE」を実行するとテーブル単位にロック がかかる可能性がありますし、かからないとしてもリソースを消 費するので実行タイミングを検討する必要があります。 > (4)さらに、DBの物理ファイルがディスク上で断片化してい > るのを、デフラグで解消する。 デフラグするにはSQLSERVERのサービスを止めないといけません。 基本的にはデータベースを作成するタイミング(CREATE DATABASE) でファイルグループを分けて十分な容量を確保しておき、テーブ ル、インデックスを作成するタイミングで明示的にファイルグル ープを指定するほうがいいと思います。
お礼
ご回答ありがとうございます。 「ファイルの断片化」というのが、ファイルの実体のことか、DB内のデータのことか、いろいろなサイトの説明を見てもはっきりわからなくて質問させていただいたのですが、理解どおりのようでよかったです。 インデックスやデフラグをかけるときの注意事項など、詳細な説明も追加していただき、大変勉強になりました。