大資料表的truncate,列刪除,shrink回收高水位
大資料表的truncate,列刪除,shrink回收高水位
一、truncate 大資料表的操作
1、 truncate相關表,truncate先刪除資料字典中的該表所佔用的空間記錄
2、 將表所佔用的資料塊全部釋放
3、 最後將表的HWM下降到最低。
如果你的表是一個巨大的表(幾十GB),那麼釋放資料塊需要很久很久,影響你的系統使用。
解決方案:
1、先刪除資料字典中該表所佔用空間的記錄,將表的HWM下降到最低。
truncate table doudou reuse storage;
2、下面的命令就是在系統空間時間釋放資料塊
alter table doudou deallocate unused keep 1G;
alter table doudou deallocate unused keep 0m;
最終將表doudou所有佔用的空間全部釋放。當然,如果我們在執行keep 0mb 之前,其他使用者已經向表doudou裡插入了資料,則不會真的把表doudou所有資料塊釋放,而只是釋放沒有用的資料塊而已。
二、大資料量表列的修改與刪除
1、基本刪除列
Alter table doudou drop column wow ; (刪除wow列,該列的資料及索引也被刪除)
Alter table doudou drop column wow cascade constraints;(刪除wow列,該列的資料,索引,及外來鍵引用的列都被刪除)
Alter table doudou drop column wow cascade constraints checkpoint 2000; (checkpoint 2000產生完全檢查點這樣可以節省undo資源)
2、大資料量刪除列
刪除列的過程中,oracle會鎖定表,其他使用者不能對錶經行DML操作。如果表資料行非常多,則刪除了所花的時間會很長。尤其在業務高峰時期影響會更嚴重。為此,我們可以先將列標記為不可用,這是邏輯意義上的,只是更新資料字典裡的資訊,因此速度非常快。等到了業務繁忙的時候,我們再從物理上真正刪除列佔用的空間
alter table doudou set unused column wow;(wow列在物理上仍然存在,但是相對於使用者來說,該列就像真的被刪除了一樣。)
alter table doudou drop unused columns wow;真正的物理刪除了。(不忙的時候經行)
alter table doudou drop unused columns wow checkpoint 2000; 節省了undo資源的使用。
三、Shrink回收高水位
使用shrink的條件:
1、 表所在的表空間必須使用ASSM。
2、 收縮表引起資料行在不同資料塊之間的轉移,因此在被收縮的表上必須啟動row movement,選項。Alter talbe doudou enable row movement; 收縮後,結束行移動;alter table doudou disable row movement;
使用shrink的過程:
alter table doudou shrink space compact; 壓縮階段 (oracle建議在高峰時間壓縮)
alter table doudou shrink space; 收縮階段 (oracle建議在不忙的時候收縮,收縮會產生排他鎖,因此其他使用者不能對收縮的表經行任何操作)
alter table doudou shrink space cascade; 不僅收縮doudou表的,還收縮doudou相關表
感謝韓思捷老師的《教你如何成為OCP》!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26442936/viewspace-734169/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle資料庫管理——表資料庫高水位及shrink操作Oracle資料庫
- Oracle 找出需要回收高水位的表Oracle
- 刪除大表資料
- oracle回收高水位Oracle
- oracle 回收高水位線Oracle
- oracle回收高水位線Oracle
- 如何刪除大表中的資料
- 表管理之四:刪除資料Delete與truncate的使用區別delete
- python 刪除大表資料Python
- truncate table 誤刪除資料後的恢復
- delete與高水位線HWM回收delete
- Oracle大表刪除部分資料的最佳方案Oracle
- delete/truncate刪除資料索引空間問題delete索引
- 【C/C++】資料庫刪除大表C++資料庫
- 【原創】通過資料字典操作刪除表的列
- MySQL刪除資料表MySql
- 為什麼當刪除整個表中的資料時,需使用TRUNCATE代替DELETEdelete
- 200G大表刪除資料方案
- 資料塊的插入與高水位
- 如何高效率刪除大表歷史資料
- 海量資料表刪除方案
- mysql資料庫中刪除資料的三種形式 drop和 truncate 和 deleteMySql資料庫delete
- delete和truncate刪除的區別delete
- MongoDB 資料庫建立刪除、表(集合)建立刪除、資料增刪改查MongoDB資料庫
- 循序漸進oracle第8章:Oracle的閃回特性之恢復truncate刪除表的資料Oracle
- 簡單介紹mysql如何刪除資料表和關聯的資料表刪除詳情MySql
- 【北亞資料恢復】誤刪除oracle表和誤刪除oracle表資料的資料恢復方法資料恢復Oracle
- MySQL(四) 資料表的插入、更新、刪除資料MySql
- oracle修改表增加列刪除列修改列Oracle
- ORACLE高水位表的查詢方法Oracle
- 刪除表裡重複資料
- 刪除資料庫表空間資料庫
- 刪除a表中和b表相同的資料
- mysql 刪除表中重複的資料MySql
- sql server:刪除表資料,標識列Id從1開始SQLServer
- Oracle表段中的高水位線HWMOracle
- 表管理之二:表資料的插入修改與刪除
- ORACLE刪除-表分割槽和資料Oracle