SSブログ

Oracle LOB圧縮② [DBMS]

今回はLOBセグメントを実際に圧縮してみます。
LOBL.jpgLOBS.jpg
まずは元のテーブルの情報で、下の様に作られています。
テーブル名 DDNTF
スキーマ名 SAPSR3
項目 FIELDS を BLOB で SECUREFILE の NOCOMPRESS で テーブル本体と LOB 両方ともテーブルスペース PSAPSR3 に作っています。

CREATE TABLE "SAPSR3"."DDNTF"
( "TABNAME" VARCHAR2(90) DEFAULT ' ' NOT NULL ENABLE,
"BLOCKNR" NUMBER(3,0) DEFAULT 0 NOT NULL ENABLE,
"FIELDSLG" NUMBER(5,0) DEFAULT 0 NOT NULL ENABLE,
"FIELDS" BLOB
)
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 COMPRESS FOR OLTP LOGGING
STORAGE(INITIAL 207839232 NEXT 10485760 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "PSAPSR3"
LOB ("FIELDS") STORE AS SECUREFILE (
TABLESPACE "PSAPSR3" ENABLE STORAGE IN ROW CHUNK 8192
CACHE LOGGING NOCOMPRESS KEEP_DUPLICATES
STORAGE(INITIAL 106496 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)) ;

LOBスキーマの名称は SYS_LOB0000013321C00004$$ で、SECUREFILE ですが、圧縮はされていません。
ちなみにテーブルの方も圧縮されていません。
元テーブル情報1m.jpg
それぞれのセグメントのサイズです。
LOBは約251MBあります。
元テーブル情報2m.jpg

それでは、同じ構造でLOBをMEDIUM圧縮のテーブルを作り、データを移行します。
13行目にある COMPRESS MEDIUM が圧縮指定です。
MEDIUM圧縮1m.jpg
LOBは 約6MBと元の 約2%にまで圧縮されました。
データの中身にもよるでしょうが、かなり圧縮されました。
MEDIUM圧縮2m.jpg

続いて、HIGH圧縮のLOBに移行してみたいと思います。
13行目にある COMPRESS HIGH が圧縮指定です。
HIGH圧縮1m.jpg
LOBは 約2MBと元の 約0.8%にまで圧縮されました。
さすがに HIGH です。
HIGH圧縮2m.jpg

ものは試しで SECUREFILE → BASICFILE ではどうなるのか見てみました。
11行目で STORE AS BASICFILE でBASICFILEを指定します。
BASICFILE1m.jpg
LOBは 200MBでした。SECUREFILEの方が少し大きい様です。
BASICFILE2m.jpg

BASICFILE → SECUREFILE圧縮なし → 圧縮MEDIUM → 圧縮HIGH と直接変更出来ないのが欠点ですが、圧縮まで行えばだいぶ容量的に小さくなる様です。

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

nice! 0

コメント 0

コメントを書く

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

トラックバック 0

Oracle LOB圧縮①Oracle LOB圧縮③ ブログトップ

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