大資料表的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資料庫
- python 刪除大表資料Python
- 【C/C++】資料庫刪除大表C++資料庫
- delete和truncate刪除的區別delete
- MySQL刪除資料表MySql
- 如何高效率刪除大表歷史資料
- Oracle move和shrink釋放高水位空間Oracle
- 簡單介紹mysql如何刪除資料表和關聯的資料表刪除詳情MySql
- 【北亞資料恢復】誤刪除oracle表和誤刪除oracle表資料的資料恢復方法資料恢復Oracle
- 刪除a表中和b表相同的資料
- mysql 刪除表中重複的資料MySql
- whk我【資料刪除】你個【資料刪除】的
- python刪掉資料表幾列的方法Python
- MySQL超大表刪除資料過程MySql
- ORACLE刪除-表分割槽和資料Oracle
- sql 多表關聯刪除表資料SQL
- PostgreSQL刪除表中重複資料SQL
- 使用硬連結和coreutils的truncate工具shrink大檔案方法一例
- 如何刪除資料庫下的所有表(mysql)資料庫MySql
- Oracle中刪除表中的重複資料Oracle
- ORACLE資料庫降低高水位線方法Oracle資料庫
- MySQL如何優雅的刪除大表MySql
- 刪除資料
- 查詢陣列裡資料刪除和增加的方法陣列
- 表空間(資料檔案shrink)收縮示例
- MYSQL下如何安全的快速刪除大表MySql
- MySQL資料庫表誤刪除恢復(一)MySql資料庫
- 大資料量刪除的思考(一)大資料
- 大資料量刪除的思考(三)大資料
- 大資料量刪除的思考(四)大資料
- 大資料量刪除的思考(二)大資料
- indexedDB 刪除資料Index
- 刪除elasticsearch資料Elasticsearch
- 【資料庫資料恢復】如何恢復Oracle資料庫truncate表的資料資料庫資料恢復Oracle
- Laravel 資料庫裡的資料刪除Laravel資料庫
- MYSQL資料庫表記錄刪除解決方案MySql資料庫
- MySQL 5.7的表刪除資料後的磁碟空間釋放MySql
- 6.12php對資料庫的刪除和批量刪除PHP資料庫
- 資料夾刪除不了怎麼辦?資料夾刪除不了的解決方法