DB2刪除數據時,經常會使用到DELETE TABLE命令,但是,DELETE TABLE命令仍然有一些局限性,在處理數據量很大的情況下,但是做得不夠完美。
當用DELETE TABLE命令在DB2刪除數據時,該操作會逐條刪除表中記錄,並記入活動的交易日志。當表中數據量很大時,如果活動的交易日志不夠大,就會遇到交易日志已滿的錯誤,並回滾日志。即使活動的交易日志足夠大,DB2刪除數據量很大的表的操作也會占用很多時間。用以空文件為數據文件導入IMPORT)並替換REPLACE)表的辦法可以解決這個問題。例如
IMPORT FROM /dev/null OF DEL REPLACE INTO 目標表名
這樣交易日志只會記錄下該條命令,並立即釋放所占的空間,而不會像DB2刪除數據命令一樣逐條掃描記錄,這就類似於DROP掉該表再創建一個完全相同只是沒有數據的表一樣。
對於屬於DMS表空間的表來說,DB2刪除數據命令逐條掃描記錄,所占的記錄空間仍標記為該表所用,而不立即釋放空間,需要用REORG命令才可以釋放剩余空間。用 LIST TABLESPACE SHOW DETAIL 可以對比兩條命令執行後表空間中的剩余空間的大小。
用LOAD命令加REPLACE參數可以達到類似IMPORT命令加REPLACE的效果,但是由於LOAD本身不記日志,所以對於可恢復的數據庫,LOAD完成後建議馬上做一下聯機備份的,相比之下,IMPORT命令加REPLACE操作上比較簡單一些。
在windows裡面,下面這句實現了。
import from c:\empty.txt of del replace into 目標表名
DB2索引設計准則
可視化 DB2 空間數據
有關DB2創建跨庫視圖的操作方案
DB2更新執行計劃的幾個好用的方法
在Linux9操作系統上手動安裝DB2