AUTO_SHRINK データベース オプションの使用は推奨されない

AUTO_SHRINKオプションはMicrosoftが推奨していません

SQLServer2005 でも2008でもAUTO_SHRINK データベース オプション(sp_helpdbでは”IsAutoShrink”)を ONにすることは推奨されていません。
サービス中に圧縮が走るとサーバリソースを食うでしょうし、HDDのディスク断片化も促進するってことで、パフォーマンス悪化に直結しそうなことが想像に難くありません。

参照:MSDN(SQLServer2005)、「ベストプラクティス」の項
参照:MSDN(SQLServer2008)、「ベストプラクティス」の項

自動圧縮が行われるタイミング

自動圧縮はその時点で確保しているファイルサイズ 25% を超える領域が未使用の場合に実行され、未使用領域がファイルサイズ全体の25%になるサイズorファイル作成時点のファイルサイズまで圧縮されます。
MSDNには次のように記載されています。

AUTO_SHRINK オプションを使用すると、ファイル領域の 25% を超える領域が未使用の場合にファイルが圧縮されます。未使用領域がファイル領域の 25% になるサイズ、またはそのファイルが作成された時点でのサイズの、どちらか大きい方のサイズまで圧縮されます。

参照:MSDN(SQLServer2005)、「AUTO_SHRINK」の項

自動圧縮の設定を変更する方法

ALTER DATABASE句を使用します。

ALTER DATABASE DB名 SET AUTO_SHRINK OFF

上記はオプションをOFFにする場合で、ONにしたいなら"OFF”のところを"ON”にすればおk。

参照:MSDN(SQLServer2008)
参照:MSDN(SQLServer2008)

GUIでやるならSQLManagementStudioで

データベースのプロパティ → オプション → 自動圧縮

です。

まぁ、普通の運用では…

まぁ普通の運用ではデータファイルに対して自動圧縮が走ることはないような気はします。

ログファイルのほうは、ファイル作成サイズが小さかったりすると頻繁に自動拡張→自動圧縮されるケースがあります(実体験済)。要注意です。

しかし、「ファイルが作成された時点でのサイズ」っていうのはどこで見れば分かるんだろうか…誰か教えて…


SQLServer2005で確認しました。ただし、自動圧縮のタイミングに関する部分は確認していません。

コメントを残す