如何刪除大表中的資料
通常我們認為truncate和drop都是ddl語句,都會釋放表佔用的空間,且不可回退;而他們的之間的區別在於我們平時忽略的reuse/drop storage子句.
reuse storage不會立即釋放表的extent,我們可以先使用truncate table tableName reuse storage,然後分批釋放表的extent.這在刪除大表時非常有用,避免大量的io操作,影響整體效能.如果使用預設的drop storage就會立即釋放extent,刪除的表如果非常大,這對系統有時候這可能是災難性的.
版本:10.2.0.1
說明:在9i下如此操作為報錯(後續說明)。
實驗過程如下:
SQL> insert into yanga select * from yanga;
50474 rows created.
SQL> /
100948 rows created.
SQL> /
201896 rows created.
SQL> /
403792 rows created.
SQL> /
807584 rows created.
SQL> /
1615168 rows created.
SQL> select sum(bytes)/1024/1024 MB from dba_segments where segment_name=UPPER('yanga');
MB
----------
349
SQL> truncate table yanga reuse storage;
Table truncated.
SQL> select sum(bytes)/1024/1024 MB from dba_segments where segment_name=UPPER('yanga');
MB
----------
349
SQL> alter table yanga deallocate unused keep 50M;
Table altered.
SQL> select sum(bytes)/1024/1024 MB from dba_segments where segment_name=UPPER('yanga');
MB
----------
50.0625
SQL> alter table yanga deallocate unused keep 10M;
Table altered.
SQL> select sum(bytes)/1024/1024 MB from dba_segments where segment_name=UPPER('yanga');
MB
----------
10.0625
SQL> alter table yanga deallocate unused keep 0 M;
Table altered.
SQL> select sum(bytes)/1024/1024 MB from dba_segments where segment_name=UPPER('yanga');
MB
----------
.0625
SQL> drop table yanga purge;
Table dropped.
SQL> select sum(bytes)/1024/1024 MB from dba_segments where segment_name=UPPER('yanga');
MB
----------
以上是10g2的操作。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-704778/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 刪除大表資料
- python 刪除大表資料Python
- 如何高效率刪除大表歷史資料
- Oracle中刪除表中的重複資料Oracle
- mysql 刪除表中重複的資料MySql
- 在MySQL中如何有效的刪除一個大表?MySql
- Oracle大表刪除部分資料的最佳方案Oracle
- 簡單介紹mysql如何刪除資料表和關聯的資料表刪除詳情MySql
- PostgreSQL刪除表中重複資料SQL
- 【C/C++】資料庫刪除大表C++資料庫
- MySQL如何優雅的刪除大表MySql
- 如何刪除資料庫下的所有表(mysql)資料庫MySql
- MySQL刪除資料表MySql
- 200G大表刪除資料方案
- MYSQL下如何安全的快速刪除大表MySql
- 大資料表的truncate,列刪除,shrink回收高水位大資料
- 海量資料表刪除方案
- 如何正確的刪除表空間資料檔案
- MongoDB 資料庫建立刪除、表(集合)建立刪除、資料增刪改查MongoDB資料庫
- MySQL(四) 資料表的插入、更新、刪除資料MySql
- 【北亞資料恢復】誤刪除oracle表和誤刪除oracle表資料的資料恢復方法資料恢復Oracle
- oracle 查詢及刪除表中重複資料Oracle
- mysql 查詢及 刪除表中重複資料MySql
- 需要在一個1億行的大表中,刪除1千萬行資料
- 刪除表裡重複資料
- 刪除資料庫表空間資料庫
- MongoDB中如何優雅地刪除大量資料MongoDB
- 刪除a表中和b表相同的資料
- 如何刪除oracle資料庫Oracle資料庫
- Rails中刪除資料物件AI物件
- 【MySQL】批量刪除mysql中資料庫中的表MySql資料庫
- Oracle如何刪除表中重複記錄Oracle
- whk我【資料刪除】你個【資料刪除】的
- 表管理之二:表資料的插入修改與刪除
- ORACLE刪除-表分割槽和資料Oracle
- sql 多表關聯刪除表資料SQL
- Oracle批量建立、刪除資料庫表Oracle資料庫
- MySQL超大表刪除資料過程MySql