Truncate Table的時候不管是用drop storage 或reuse storage都會將HWM重新設定到第一

路途中的人2012發表於2017-03-01

A, B 為兩個Table .
A, B 的資料分別放在 erp_data  表空間下  
A, B 的索引分別放在 erp_indx  表空間下   

那麼
我們使用下面的兩個語句刪除兩個表中的資料
Truncate table A  drop    storage  ;  
Truncate table B  reuse  storage  ;   

得到的結果將是:

Truncate table A  drop    storage  ;  
--data :   資料部分所在的extent 空間會被釋放(釋放回收到 minextents
             個extent),騰出來的空間可以供其它segment 使用 。
--index :  B表的index部分會資料刪除,extent部分也被釋放,剩下第一個extent
--hwm :   會將HWM重新設定到第一個Block的位置(hwm會改變).


Truncate table B  reuse  storage  ;   
--data :   資料部分所在的extent 空間不會被回收(僅僅資料會被刪
       除),資料刪除之後的freespace 空間只能供本表使用,不可
       以供其它 segment 使用 。   
--index :  B表的index部分會資料刪除,但是保留extent 部分
--hwm :   會將HWM重新設定到第一個Block的位置(hwm會改變).

 



1、測試開始,建兩張表A
,B及相應的索引inx_A,idx_B


SQL
show user

USER is 
"QIUYB&quot
;

SQLcreate table A (col number
);

Table created
.


SQLinsert into A values(1
);

1 row created
.
SQLinsert into A select from A
;
1 row created
.

SQL
> /
2 rows created
.

SQL
> /

4 rows created
.

SQL
> /

8 rows created
.

SQL
> /

16 rows created
.

SQL
> /

32 rows created
.

SQL
> /
64 rows created
.

SQL
> /

128 rows created
.

SQL
> /

256 rows created
.


SQL
> /

512 rows created
.

SQL
> /

1024 rows created
.

SQL
> /
2048 rows created
.

SQL
> /
4096 rows created
.

SQL
> /
8192 rows created
.

SQL
> /
16384 rows created
.

SQL
> /

32768 rows created
.

SQL
> /

65536 rows created
.

SQLcommit
;

Commit complete
.


SQLcreate table B as select from A
;

Table created
.


SQLcreate index idx_A on A(col
);

Index created
.


SQLcreate index idx_B on B(col
);

Index created
.



2、檢視一下這四個段對於extent的使用。


SQL
select segment_name,extent_id,
bytes 

  2   from user_extents 

  3   where segment_name like 
'%A%' OR segment_name like 
'%B%'    

  
4   order by 1,
2

  5  
/


SEGMENT_NA  EXTENT_ID      BYTES
---------- ---------- ----------
A                   0      65536
A                   1      65536
A                   2      65536
A                   3      65536
A                   4      65536
A                   5      65536
A                   6      65536
A                   7      65536
A                   8      65536
A                   9      65536
A                  10      65536
A                  11      65536
A                  12      65536
A                  13      65536
A                  14      65536
A                  15      65536
A                  16    1048576
B                   0      65536
B                   1      65536
B                   2      65536
B                   3      65536
B                   4      65536
B                   5      65536
B                   6      65536
B                   7      65536
B                   8      6553
B                   9      65536
B                  10      65536
B                 11      65536
B                  12      65536
B                  13      65536
B                  14      65536
B                  15      65536
B                  16    1048576
IDX_A               0      65536
IDX_A               1      65536
IDX_A               2      65536
IDX_A               3      65536
IDX_A               4      65536
IDX_A               5      65536
IDX_A               6      65536
IDX_A               7      65536
IDX_A               8      65536
IDX_A               9      65536
IDX_A              10      65536
IDX_A              11      65536
IDX_A              12      65536
IDX_A              13      65536
IDX_A              14      65536
IDX_A              15      65536
IDX_A              16    1048576
IDX_A              17    1048576
IDX_B               0      65536
IDX_B               1      65536
IDX_B               2      65536
IDX_B               3      65536
IDX_B               4      65536
IDX_B               5      65536
IDX_B               6      65536
IDX_B               7      65536
IDX_B               8      65536
IDX_B               9      65536
IDX_B              10      65536
IDX_B              11      65536
IDX_B              12      65536
IDX_B              13      65536
IDX_B              14      65536
IDX_B              15      65536
IDX_B              16    1048576
IDX_B              17    1048576

70 rows selected
.





3、檢視A,B表的HWM,計算公式HWM=total_blocks-empty_blocks,可以看到A,B的HWM分別為232,
168
SQL
analyze table A compute statistics
;
Table analyzed
.

SQLanalyze table B compute statistics
;
Table analyzed
.  

SQL
col table_name format a10

SQL
SELECT TABLE_NAME,blocks,empty_blocks,blocks-
empty_blocks hwm
  2   FROM user_tables 
  3   WHERE table_name IN 
('A','B'
)
  
4  
/


SQL
set pagesize 10 
SQL
> /

TABLE_NAME     BLOCKS EMPTY_BLOCKS        HWM
---------- ---------- ------------ ----------
A                 244           12        232
B                 212           44        168


4、以DROP STORAGE
,
REUSE STORAGE兩種選項對A,B做不同的操作看差別

SQL
truncate table A DROP STORAGE
;

Table truncated
.

SQLtruncate table B REUSE STORAGE
;
Table truncated
.

SQL
SET PAGESIZE 300

SQL
select segment_name,extent_id,
bytes 

  2    from user_extents 

  3   where segment_name like 
'%A%' OR segment_name like 
'%B%'    

  
4   order by 1,
2

  5  
/



SEGMENT_NA  EXTENT_ID      BYTES
---------- ---------- ----------
A                   0      65536
B                   0      65536
B                   1      65536
B                   2      65536
B                   3      65536
B                   4      65536
B                   5      65536
B                   6      65536
B                   7      65536
B                   8      65536
B                   9      65536
B                  10      65536
B                  11      65536
B                  12      65536
B                  13      65536
B                  14      65536
B                  15      65536
B                  16    1048576
IDX_A               0      65536
IX_B               0      65536
IDX_B               1      65536
IDX_B               2      65536
IDX_B               3      65536
IDX_B               4      65536
IDX_B               5      65536
IDX_B               6      65536
IDX_B               7      65536
IDX_B               8      65536
IDX_B               9      65536
IDX_B              10      65536
IDX_B              11      65536
IDX_B              12      65536
IX_B              13      65536
IDX_B              14      65536
IDX_B              15      65536
IDX_B              16    1048576
IDX_B              17    1048576


37 rows selected
.


可以看到A表本身及其索引idx_A的extent都是釋放的,都保留到第一個extent。
SQL
>  analyze table A compute statistics
;

Table analyzed
.

SQLanalyze table B compute statistics
;

Table analyzed
.

SQLSELECT TABLE_NAME,blocks,empty_blocks,blocks-
empty_blocks hwm

  2  FROM user_tables 

  3  WHERE table_name IN 
('A','B'
)

  
4  
/



TABLE_NAME     BLOCKS EMPTY_BLOCKS        HWM
---------- ---------- ------------ ----------
A                   0            8         -
8
B                   0          256       
-
256



可以看到兩個表的hwm都回到了第一個block。  

<B< font>




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29067253/viewspace-2134504/,如需轉載,請註明出處,否則將追究法律責任。

相關文章