close
Oracle High water mark - HWM
The high water mark is divides a segment into used blocks free blocks.
HWM 是一個指標, 指向 segment 內哪些 blocks 已經使用過, 且 HWM 有一個特性 : 是只會往尾部移動, 不會往頭移動.
所以 HWM 所指的地方, 一邊是使用過的另一邊是未使用的. 當我們 insert 資料進 table, 這個指標就會往後移動, 當我們刪除資料時並不會往前移, (一個 table space 的使用情況可以參考 DBA_SEGMENTS.) 所以當 table 的使用是有新增且刪除循環時, 時間一久便會發現 Table(Table space) 的空間怎這麼變的不合理的大, 就是因為 HWM 不會往後縮導致.
HWM 對於 Performance 的影響是, 當 full table scan 時, 用此標示決定這一個 segment 是否已經讀取完畢, 所以當 HWM 所指示所在已使用 blocks 內其實有很多碎片空間, 會造成讀取很多不必要的空白 blocks.
調整 HWM 標示, 可使用下指令, 當您 move, rebuild 後再去查使用空間會發現變小了.
alter table table_name move;
alter index index_table rebuild;
alter table table_name shrink space ;
全站熱搜