Truncate Table的時候不管是用drop storage 或reuse storage都會將HWM重新設定到第一
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"
SQL> create table A (col number);
Table created.
SQL> insert into A values(1);
1 row created.
SQL> insert 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.
SQL> commit;
Commit complete.
SQL> create table B as select * from A;
Table created.
SQL> create index idx_A on A(col);
Index created.
SQL> create 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.
SQL> analyze 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.
SQL> truncate 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.
SQL> analyze table B compute statistics;
Table analyzed.
SQL> SELECT 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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Truncate table時不管使用drop storage或reuse storage都會講HWM重新設定
- Oracle大表清理truncate .. reuse storageOracle
- HWM和delete,drop,truncate的關係delete
- Drop table時候會徹底刪除index, Truncate 時候會清除index 但是index資料還是保留在HIndex
- drop table和truncate table的區別
- Azure 基礎:Table storage
- MYSQL TABLE CHANGE STORAGE ENGINEMySql
- Azure Storage 系列(五)通過Azure.Cosmos.Table 類庫在.Net 上使用 Table Storage
- select 表的時候如果別的會話TRUNCATE DROP PURGE表後會是什麼結果會話
- 將資料庫備份到AZURE blob storage資料庫
- The Storage Situation: Removable StorageREM
- oracle中用Create Table建立表時,Storage中引數的含義!Oracle
- Truncate table 詳解及與delete,drop 的區別delete
- Truncate table詳解及與delete,drop的區別delete
- storage事件中的坑,storage.setItem()無法觸發storage事件事件
- create table之storage選項initial和其它
- Oracle Exadata的TABLE ACCESS STORAGE FULL執行計劃Oracle
- Database StorageDatabase
- 表的storage (MINEXTENTS 屬性對truncate後表大小的影響
- Azure 基礎:自定義 Table storage 查詢條件
- 自定義 Azure Table storage 查詢過濾條件
- Azure Terraform(十二)利用 Terraform 將檔案上傳到 Azure Blob StorageORM
- 怎樣將SQL Azure資料庫備份到本地或者StorageSQL資料庫
- 關於單頁面應用的 Token Storage 設計策略
- 測試alter table storage及dbms_space_admin包
- JavaScript storage 事件JavaScript事件
- Web Storage概述Web
- Kafka Offset StorageKafka
- MySQL Storage EnginesMySql
- Physical Storage StructuresStruct
- Password Storage - UserDetailsAI
- partition table中truncate應用
- SAP WM Storage Type Search配置裡的Storage Class & WPC標記
- drop、delete 與truncatedelete
- Display Storage Map for Database | Tablespace | Datafile Storage_1377458.1Database
- Truncate,Delete,Drop的比較.delete
- Spark在處理資料的時候,會將資料都載入到記憶體再做處理嗎?Spark記憶體
- SAP WM 虛擬Storage Type設計案例之 - Fixed Bin Storage Type 裡實現FIFO –