快速清空DB2表记录

alter table tabname activate not logged initially with empty table

如果要清空部分表内容,下面两句要一起执行
alter table tabname activate not logged initially 
delete from tabname where id >1000

truncate 命令在DB2里面没有,V9.7据说有.

===================================================

db2 import from /dev/null of del replace into tabname

======================================================

在DB2数据库中,如果想快速清空一张大表(类似在 ORACLE 中使用 TRUNCATE TABLE 快速清空一张大表),有两种方法:

1. 使用 “ ALTER TABLE 表名 ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE ” 命令。
2. 使用空文件为数据文件导入并替换表中数据。

* 在 windows 平台,可以先使用 EXPORT 导出一个空文件,再使用 IMPORT 命令从空文件中导入并替换该表中数据,比如:
export to test.ixf of ixf messages log.txt select * from test where 1=2
import from c:\ test.ixf of ixf messages log1.txt replace into test
* 在 UNIX 平台,除了使用 A 方法以外,还可以使用从空(NULL)中导入并替换该表数据,比如:
import from /home/null of del replace into test

如果使用“ DELETE TABLE ”命令删除整个大表中的数据,由于这个命令采用逐条删除,并把该操作记入活动的交易日志,将会耗费大量的活动日志空间,有可能造成数据库交易日志已满错 误,另外,这样删除大表数据耗费的时间也很长。对于属于 DMS 表空间的表来说,删除命令逐条扫描记录,所占的记录空间仍标记为该表所用,而不立即释放空间,需要用 REORG 命令才可以释放剩余空间。

使用以上两种DB2表快速清空方法进行快速清空一张大表,将使 DB2 交易日志只记录该条命令,并立即释放所占用的空间,而不会像删除命令一样逐条扫描记录,从而节省大量的数据库交易日志和处理时间。用 LOAD 命令加 REPLACE 参数可以达到类似 IMPORT 命令加 REPLACE 的效果,但是由于 LOAD 本身不记日志,所以对于可恢复的数据库,LOAD 完成后建议马上做一下联机备份的,相比之下,IMPORT 命令加 REPLACE 操作上比较简单一些。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7899089/viewspace-683384/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7899089/viewspace-683384/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值