Oracle表段中高水位線HWM
在Oracle資料的儲存中,可以把儲存空間想象為一個水庫,資料想象為水庫中的水。水庫中的水的位置有一條線叫做水位線,在Oracle中,這條線被稱為高水位線(High-warter mark, HWM)。在表剛建立的時候,由於沒有任何資料,所以這個時候水位線是空的,也就是說HWM為最低值。當插入了資料以後,高水位線就會上漲,但是這裡也有一個特性,就是如果你採用delete語句刪除資料的話,資料雖然被刪除了,但是高水位線卻沒有降低,還是你剛才刪除資料以前那麼高的水位。也就是說,這條高水位線在日常的增刪操作中只會上漲,不會下跌。
那有沒有辦法讓高水位線下降呢,其實有一種比較簡單的方法,那就是採用TRUNCATE語句進行刪除資料。採用TRUNCATE語句刪除一個表的資料的時候,類似於重新建立了表,不僅把資料都刪除了,還把HWM給清空恢復為0。所以如果需要把表清空,在有可能利用TRUNCATE語句來刪除資料的時候就利用TRUNCATE語句來刪除表,特別是那種資料量有可能很大的臨時儲存表。
如果在執行刪除操作後不降低高水位線標記或不回收使用空間,則將導致查詢語句的效能低下。下面的方法都可以降低高水位線標記。
1.執行alter table table_name shrink space cascade; 此命令為Oracle10g新增功能,再執行該指令之前必須允許行移動alter table table_name enable row movement;假設表t_lob如下:
SQL> alter table t_lob enable row movement;
Table altered.
SQL> alter table t_lob shrink space cascade;
Table altered.
2.複製要保留的資料到臨時表t,drop原表,然後rename臨時表t為原表
3.emp/imp
4.alter table table_name deallocate unused;
5.儘量truncate 將會省去很多麻煩。
而如果表中有LOB欄位時,也可以做嗎?答案是肯定的.可以透過兩種方法來做.一種是透過普通的alter table table_name shrink space cascade來做(注意一定要有cascade);第二種是透過alter table table_name modify lob(column) (shrink space)來做,但這樣只回收LOB欄位使用空間,不回收表的使用空間.只有對錶alter table t_lob shrink space 才能回收表空間。可以透過select segment_name,segment_type,bytes/1024,tablespace_name from user_segments;語句查詢段LOBSEGMENT和表t_lob的大小變化。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/628922/viewspace-614866/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle表段中的高水位線HWMOracle
- ORACLE 高水位線(HWM)Oracle
- oracle的高水位線HWMOracle
- oracle的高水位線(HWM)Oracle
- Oracle 高水位(HWM)Oracle
- Oracle段高水位(HWM, high water mark)問題Oracle
- Oracle高水位線(HWM)及效能優化Oracle優化
- Oracle案例10——HWM(高水位線)效能優化Oracle優化
- Oracle 高水位(HWM)標記Oracle
- delete與高水位線HWM回收delete
- oracle11g表的高水位線hwm與dbms_space系列一Oracle
- 深入瞭解oracle的高水位(HWM)Oracle
- oracle表碎片以及整理(高水位線)Oracle
- 各個Oracle 版本下如何調整高水位(HWM)Oracle
- oracle 回收高水位線Oracle
- Oracle 降低高水位線Oracle
- oracle回收高水位線Oracle
- oracle 高水位線及如何有效的降低高水位線Oracle
- oracle高水位線處理Oracle
- Oracle之降低高水位線Oracle
- oracle 高水位線詳解Oracle
- 一、oracle 高水位線詳解Oracle
- 降低Oracle高水位線的方法Oracle
- Oracle的高水位線介紹Oracle
- Oracle HWMOracle
- Oracle 高水位線的一點研究Oracle
- ORACLE高水位表的查詢方法Oracle
- ORACLE資料庫降低高水位線方法Oracle資料庫
- Oracle delete 高水位線處理問題Oracledelete
- 對Oracle高水位線的研究實踐Oracle
- Oracle 之HWMOracle
- Oracle 找出需要回收高水位的表Oracle
- 【實驗】關於HWM(高水位)的學習與測試
- 通過降低表的高水位(HWM: High Water Mark) ,解決一生產系統故障
- Oracle高水位Oracle
- oracle回收高水位Oracle
- ORACLE FREELIST HWM(轉)Oracle
- ORACLE FREELIST HWM(3)Oracle