AUTO_SHRINKオプションはMicrosoftが推奨していません
SQLServer2005 でも2008でもAUTO_SHRINK データベース オプション(sp_helpdbでは”IsAutoShrink”)を ONにすることは推奨されていません。
サービス中に圧縮が走るとサーバリソースを食うでしょうし、HDDのディスク断片化も促進するってことで、パフォーマンス悪化に直結しそうなことが想像に難くありません。
参照:MSDN(SQLServer2005)、「ベストプラクティス」の項
参照:MSDN(SQLServer2008)、「ベストプラクティス」の項
自動圧縮が行われるタイミング
自動圧縮はその時点で確保しているファイルサイズ 25% を超える領域が未使用の場合に実行され、未使用領域がファイルサイズ全体の25%になるサイズorファイル作成時点のファイルサイズまで圧縮されます。
MSDNには次のように記載されています。
AUTO_SHRINK オプションを使用すると、ファイル領域の 25% を超える領域が未使用の場合にファイルが圧縮されます。未使用領域がファイル領域の 25% になるサイズ、またはそのファイルが作成された時点でのサイズの、どちらか大きい方のサイズまで圧縮されます。
自動圧縮の設定を変更する方法
ALTER DATABASE句を使用します。
ALTER DATABASE DB名 SET AUTO_SHRINK OFF
上記はオプションをOFFにする場合で、ONにしたいなら"OFF”のところを"ON”にすればおk。
参照:MSDN(SQLServer2008)
参照:MSDN(SQLServer2008)
GUIでやるならSQLManagementStudioで
データベースのプロパティ → オプション → 自動圧縮
です。
まぁ、普通の運用では…
まぁ普通の運用ではデータファイルに対して自動圧縮が走ることはないような気はします。
ログファイルのほうは、ファイル作成サイズが小さかったりすると頻繁に自動拡張→自動圧縮されるケースがあります(実体験済)。要注意です。
しかし、「ファイルが作成された時点でのサイズ」っていうのはどこで見れば分かるんだろうか…誰か教えて…
SQLServer2005で確認しました。ただし、自動圧縮のタイミングに関する部分は確認していません。