■セグメント縮小について

■セグメント縮小について

・セグメント縮小とは、断片化しているセグメント内のデータをまとめることでHWMを下げることを指す。

 

・HWMは現在までに、もっとも多くのデータが格納された際のセグメントの位置を示す指標。使用済領域と未使用領域の境界を現す。

 

・現行の表内のデータが20件でも、過去に1千件のデータが格納されていれば、HWMは1千件の位置に設定される。

 

・全表操作では、HWMまで全てのブロックが読まれるため、データの追加/削除で表が断片化しているとI/O効率が悪くなる。セグメントが断片化している場合はセグメント縮小機能を使用してデータが詰まっている状態にする。


■セグメント縮小方法

・セグメント縮小は2つのフェーズで行われる。1つ目のフェーズは「領域圧縮」で2つ目のフェーズは「HWM」の移動となる。

・上記2つの処理を1つの構文で実行することも可能だし、2つに分けて実行する事も可能。


■セグメント縮小の前提条件

・対象表領域が「自動セグメント領域管理(ASSM)」
・対象表領域の行移動が有効


■実機検証

★行移動の有効化
SQL> ALTER TABLE SCOTT.DEPT ENABLE ROW MOVEMENT;
表が変更されました。


★領域圧縮とHWMの移動(2つの処理を纏めて1つのコマンドで実行)
SQL> ALTER TABLE SCOTT.DEPT SHRINK SPACE;
表が変更されました。


★領域圧縮とHWMの移動(2つの処理を2つに分けてコマンドで実行)
SQL> ALTER TABLE SCOTT.DEPT SHRINK SPACE COMPACT;
表が変更されました。
SQL>
SQL> ALTER TABLE SCOTT.DEPT SHRINK SPACE;
表が変更されました。