1. 程式人生 > >對比Oracle中truncate和delete的區別及效能

對比Oracle中truncate和delete的區別及效能

可見delete刪除表還可以回滾,而truncate截斷表就不能回滾了.(前提是delete操作沒有提交)
2.高水線
所有的Oracle表都有一個容納資料的上限(很象一個水庫歷史最高的水位),我們把這個上限稱為“high water mark”或HWM。這個HWM是一個標記(專門有一個數據塊用來記錄高水標記等),用來說明已經有多少資料塊分配給這個表. HWM通常增長的幅度為一次5個數據塊.
delete語句不影響表所佔用的資料塊, 高水線(high watermark)保持原位置不動 
truncate 語句預設情況下空間釋放,除非使用reuse storage;   truncate會將高水線復位
下面對兩種操作對比
SQL> analyze table t estimate statistics;
Table analyzed.
SQL> select segment_name,blocks from dba_segments where segment_name=upper('t');
SEGMENT_NAME                       BLOCKS
------------------------------ ----------
T                                      24
SQL> select table_name,blocks,empty_blocks from user_tables where table_name=upper('t');
TABLE_NAME                         BLOCKS EMPTY_BLOCKS
------------------------------ ---------- ------------
T                                      20            3