教您如何在DB2刪除數(shù)據(jù)量大的表
DB2刪除數(shù)據(jù)時,經常會使用到DELETE TABLE命令,但是,DELETE TABLE命令仍然有一些局限性,在處理數(shù)據(jù)量很大的情況下,但是做得不夠完美。
當用DELETE TABLE命令在DB2刪除數(shù)據(jù)時,該操作會逐條刪除表中記錄,并記入活動的交易日志。當表中數(shù)據(jù)量很大時,如果活動的交易日志不夠大,就會遇到交易日志已滿的錯誤,并回滾日志。即使活動的交易日志足夠大,DB2刪除數(shù)據(jù)量很大的表的操作也會占用很多時間。用以空文件為數(shù)據(jù)文件導入(IMPORT)并替換(REPLACE)表的辦法可以解決這個問題。例如
IMPORT FROM /dev/null OF DEL REPLACE INTO 目標表名
這樣交易日志只會記錄下該條命令,并立即釋放所占的空間,而不會像DB2刪除數(shù)據(jù)命令一樣逐條掃描記錄,這就類似于DROP掉該表再創(chuàng)建一個完全相同只是沒有數(shù)據(jù)的表一樣。
對于屬于DMS表空間的表來說,DB2刪除數(shù)據(jù)命令逐條掃描記錄,所占的記錄空間仍標記為該表所用,而不立即釋放空間,需要用REORG命令才可以釋放剩余空間。用 LIST TABLESPACE SHOW DETAIL 可以對比兩條命令執(zhí)行后表空間中的剩余空間的大小。
用LOAD命令加REPLACE參數(shù)可以達到類似IMPORT命令加REPLACE的效果,但是由于LOAD本身不記日志,所以對于可恢復的數(shù)據(jù)庫,LOAD完成后建議馬上做一下聯(lián)機備份的,相比之下,IMPORT命令加REPLACE操作上比較簡單一些。
在windows里面,下面這句實現(xiàn)了。
import from c:\empty.txt of del replace into 目標表名
【編輯推薦】