大數(shù)據(jù)DB2表快速清空方法
在我們使用DB2數(shù)據(jù)庫的過程中,有時(shí)需要將DB2表快速清空,下面就教您幾種DB2表快速清空的方法,希望對(duì)您學(xué)習(xí)DB2表快速清空方面有所啟迪。
在DB2數(shù)據(jù)庫中,如果想快速清空一張大表(類似在 ORACLE 中使用 TRUNCATE TABLE 快速清空一張大表),有兩種方法:
1. 使用 “ ALTER TABLE 表名 ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE ” 命令。
2. 使用空文件為數(shù)據(jù)文件導(dǎo)入并替換表中數(shù)據(jù)。
* 在 windows 平臺(tái),可以先使用 EXPORT 導(dǎo)出一個(gè)空文件,再使用 IMPORT 命令從空文件中導(dǎo)入并替換該表中數(shù)據(jù),比如:
export to test.ixf of ixf messages log.txt select * from test where 1=2
import from test.ixf of ixf messages log1.txt replace into test
* 在 UNIX 平臺(tái),除了使用 A 方法以外,還可以使用從空(NULL)中導(dǎo)入并替換該表數(shù)據(jù),比如:
import from /home/null of del replace into test
如果使用“ DELETE TABLE ”命令刪除整個(gè)大表中的數(shù)據(jù),由于這個(gè)命令采用逐條刪除,并把該操作記入活動(dòng)的交易日志,將會(huì)耗費(fèi)大量的活動(dòng)日志空間,有可能造成數(shù)據(jù)庫交易日志已滿錯(cuò)誤,另外,這樣刪除大表數(shù)據(jù)耗費(fèi)的時(shí)間也很長(zhǎng)。對(duì)于屬于 DMS 表空間的表來說,刪除命令逐條掃描記錄,所占的記錄空間仍標(biāo)記為該表所用,而不立即釋放空間,需要用 REORG 命令才可以釋放剩余空間。
使用以上兩種DB2表快速清空方法進(jìn)行快速清空一張大表,將使 DB2 交易日志只記錄該條命令,并立即釋放所占用的空間,而不會(huì)像刪除命令一樣逐條掃描記錄,從而節(jié)省大量的數(shù)據(jù)庫交易日志和處理時(shí)間。用 LOAD 命令加 REPLACE 參數(shù)可以達(dá)到類似 IMPORT 命令加 REPLACE 的效果,但是由于 LOAD 本身不記日志,所以對(duì)于可恢復(fù)的數(shù)據(jù)庫,LOAD 完成后建議馬上做一下聯(lián)機(jī)備份的,相比之下,IMPORT 命令加 REPLACE 操作上比較簡(jiǎn)單一些。
【編輯推薦】