システムを運用していると、データベースのサイズがどんどん大きくなり、バックアップに時間がかかって困る…という経験はありませんか?
私が保守しているシステムのデータベース(SQLServer2012)が肥大化(200GB近い)してきました。
そこでDBの圧縮オプションを入れたバックアップができないか検証して見ることにしました。
DBの圧縮オプションの主なメリットとして以下があります。
- バックアップ時間が短縮される。
- データベースのバックアップ容量が少なく済む
- データベースの移行時の時間短縮(移行データのコピー時間も少なくなる)
反対にデメリットとして
- バックアップと圧縮を同時に行うのでCPUの負荷が高くなる。
- 圧縮は取得後に行われるため、一時的に必要なDBがいまいちわからない。
今回は、ざっくりした時間などを計測して本番運用として使ってよいオプションなのかを検証してみました。圧縮オプションでバックアップを取得することを検討されている方は参考にしていただければと思います。
圧縮オプションの手順
DBバックアップの圧縮設定
[バックアップオプション]→[バックアップの圧縮設定]で[バックアップを圧縮する]とバックアップをしながら圧縮される。

バックアップコマンドにWITH COMPRESSIONオプションを追加するだけです。非常に簡単です。
BACKUP DATABASE [データベース名]
TO DISK = 'C:\backup\database.bak'
WITH COMPRESSION;驚くべき検証結果
今回検証した結果まとめ
実際に大容量のデータベースでこのオプションを試したところ、その効果は想像以上でした。
| 元のDBサイズ | 圧縮後のサイズ | 圧縮率(目安) | バックアップ時間 |
|---|---|---|---|
| 約11.3GB | 約1.3GB | 約1/8 | – |
| 約30GB | 約3.4GB | 約1/8 | – |
| 約150GB | 約15GB | 約1/10 | 約10分 |
検証したときの感想
データの内容にもよると思いますが、圧縮せずにバックアップすると約11.3GBだったDBが
圧縮してバックアップしてバックアップすると約1.3GBに圧縮されました。約30GBで試しても、約3.4GB程度に圧縮されました。ざっくり1/8程度に圧縮されるみたいです。
特に注目すべきは、約150GBという巨大なデータベースが、たった10分程度でバックアップでき、ファイルサイズも約15GBにまで圧縮されたという点です。
また、この際のCPU負荷も最大で20%程度と、システム運用に支障をきたすほどではありませんでした。
CPUの負荷は?
ざっくりした内容で申し訳ないのですが、バックアップを取得中にタスクマネジャーを監視していましたが20%以上行くこともなく、システムも特に問題なく利用できていました。本番環境にも反映していますがCPUの負荷が特別高くなり、レスポンスが極端に落ちるようなことはありませんでした。
ただし、24時間稼働しているシステムなどで採用する場合は、極力ユーザーが少ない時間帯にバックアップを取得することをお勧めします。
使ってみた感想
バックアップ時間の短縮、バックアップされるファイル容量も縮小されるのでかなり重宝します。
特にバックアップしたデータベースを別サーバーに復元したい場合などは、かなり恩恵を受けます。
- バックアップ時間の短縮
- 圧縮によってデータ容量が大幅に縮小されるので別サーバへの移行時間(コピー)が短縮される。
- リストアの時間も短縮
まとめ
SQL Serverのバックアップ圧縮オプションは、CPUに少し負荷をかけるというデメリットをはるかに上回るメリットがあります。
- バックアップ時間が遅くて困っている
- バックアップ用のディスク容量を節約したい
といった課題を抱えている方にとって、まさに必須の機能と言えるでしょう。ぜひ一度、皆さんの環境でも試してみてください。

コメント