So-net無料ブログ作成

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

前回は検索性能を見てみました。
メモリの使用量に違いはあったものの、時間的には大差ない結果でした。
今回は挿入を見てみます。

検索で使ったテーブル D010TAB と同じ構造のテーブル ZD010TAB を作って、
create table sms.ZD010TAB ( MASTER nvarchar(40) not null, TABNAME nvarchar(30) not null);
そこに insert into select で D010TAB の内容を ZD010TAB へ挿入します。
insert into [sms].[ZD010TAB] select * from [sms].[D010TAB];
挿入されるテーブルは予め空にしてから圧縮タイプを変更して、圧縮タイプでどう変わるか見てみます。
truncate table sms.ZD010TAB;
ALTER TABLE [sms].[ZD010TAB] REBUILD PARTITION = ALL WITH ( DATA_COMPRESSION = ROW );
コピー元のテーブル D010TAB は圧縮なしで実施します。

まずは圧縮なしでの結果です。約3分19秒
NONE圧縮INP1-2.jpg
続いてROW圧縮です。約2分54秒
ROW圧縮INP1-2.jpg
さらにPAGE圧縮です。約2分41秒
PAGE圧縮INP1-2.jpg
今回の結果は圧縮が進むにつれて微妙に早くなってますが、ほぼ変わらない結果になりました。

[単一挿入]
NONE 約3分19秒
ROW 約2分54秒
PAGE 約2分41秒

これだけではつまらないので、もう1つ同じテーブルを作って、2テーブル同時挿入をしてみました。
Z2D010TAB を作り、同じ様に挿入します。
create table sms.Z2D010TAB ( MASTER nvarchar(40) not null, TABNAME nvarchar(30) not null);

圧縮なしです。 約3分39秒
NONE圧縮INP2-2.jpg
ROW圧縮です。約2分58秒
ROW圧縮INP2-2.jpg
PAGE圧縮です。約2分58秒
PAGE圧縮INP2-2.jpg
圧縮ありの方が早く終了しています。

[2並列挿入]
NONE 約3分39秒
ROW 約2分58秒
PAGE 約2分58秒

今回のテーブルの場合、圧縮なしの方が多くメモリを使用するのが影響しているのではないかと思います。
実際SQLServerのメモリは4GB固定にしているのですが、圧縮なしの方が早くにMAXに到達しています。
圧縮なし
NONE圧縮INP2-1.jpg
ROW圧縮
ROW圧縮INP2-1.jpg
PAGE圧縮
PAGE圧縮INP2-1.jpg

圧縮ありなしやタイプでそれほどの差は出ない様ですが、扱うデータが大きいと圧縮した方が少し早くなる感じです。

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

nice! 0

コメント 0

コメントを書く

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

トラックバック 0

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