SSブログ

SQL Server 2008R2 データ圧縮 その② [DBMS]

前回、全てのテーブルとインデックスを圧縮するスクリプトを載せましたが、実際にはどれを圧縮しない方がよいのか、どの圧縮にしたらいいのかといった設計が必要になります。
それはさておき、全てのテーブルとインデックスを圧縮してみました。
まずは、圧縮なしの状態です。
NO圧縮3ファイルサイズ.jpg
もともと テーブルのみROW圧縮だったものを DATA_COMPRESSION = NONE にしてテーブルとインデックスを圧縮なしに変換しています。
変換前はデータベースの空き容量はほぼ 0 でしたが、変換時に変換中のテーブルは倍の容量が必要になるのかそれなりに大きくなって最終的に空き容量が出来てます。
変換するテーブルの容量+α程度の容量が必要な様です。
ログはSimpleモードになっていたので参考になりません。

テーブルやインデックスが圧縮されているかどうかはテーブルやインデックスのプロパティの Storage で見る事が出来ます。
このテーブルの圧縮タイプは ROW になってます。
テーブルプロパティ.jpg
テーブルを圧縮してもインデックスも同じ様に圧縮される訳ではありません。
別々に圧縮する必要があります。
このインデックスの圧縮タイプは ROW になってます。
インデックスプロパティ.jpg

圧縮の実行時間はデータ容量とカラムの状態によってそれなりに時間がかかります。
今回、全部変換するのにデータ約 60GB CPUが Opteron 2.4GHz シングルスレッドで 2時間弱かかっています。

ROW圧縮で以下の様になりました。2/3ぐらい?
ROW圧縮3ファイルサイズ.jpg
PAGE圧縮で以下の様になりました。データは1/2にはなってませんが、インデックスはだいぶ圧縮されています。
PAGE圧縮3ファイルサイズ.jpg

圧縮のメリットの1つに物理容量の減少によるバックアップ時間の減少があります。
SQL Server のバックアップはディスクから物理的に読み込んでバックアップデバイスに転送する様なので、データが圧縮されていてもバックアップの時は伸張せずにそのままバックアップされます。
なので、データ圧縮されているとバックアップの負荷は重くならず、物理容量が減る分だけ早くバックアップが終了します。
以下のバックアップテストではバックアップ先をNULにしているので書き込みはせず、読み込みの結果を表しています。

まずは圧縮なしでのバックアップです。
6,571,728 Page を 493 秒でバックアップしています。
NO圧縮3ファイル.jpg
ROW圧縮した環境です。
4,776,193 Page を 412 秒でバックアップしています。
ROW圧縮3ファイル.jpg
PAGE圧縮した環境です。
3,594,497 Page を 328 秒でバックアップしています。
PAGE圧縮3ファイル.jpg

nice!(2)  コメント(1)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 2

コメント 1

musselwhite

こんにちは。
サーバーって色々難しいのですね。

by musselwhite (2011-06-19 08:46) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。