教您如何在DB2删除数据量大的表

数据库
DB2对一个数据量很大的表进行快速清空,应该如何实现呢?下文采用以空文件为数据文件导入(IMPORT)并替换(REPLACE)表的办法,轻松解决了这一难题。

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

责任编辑:段燃 来源: 互联网
相关推荐

2010-09-01 09:32:08

DB2恢复

2010-11-03 11:30:56

DB2表空间扩容

2010-08-26 14:01:59

DB2插入特殊字符

2010-08-25 14:42:46

DB2AIX卸载

2010-11-03 14:28:15

DB2行转列

2010-11-04 13:50:20

DB2在线导入

2010-11-04 14:39:44

DB2删除数据

2010-09-30 11:04:47

DB2数据库卸载

2010-11-03 15:49:32

DB2删除表

2010-08-26 17:19:36

DB2数据库备份

2010-08-25 14:12:47

DB2备份恢复

2010-08-26 13:13:46

DB2Fedora Linu

2010-08-26 10:29:11

DB2许可证

2010-09-30 10:53:39

DB2表管理

2010-08-31 09:05:14

DB2linux安装

2010-11-02 11:02:48

DB2物化查询表

2015-10-23 16:40:21

DB2删除数据

2010-11-03 13:50:49

DB2删除重复数据

2010-09-01 09:27:21

DB2表名

2010-09-08 09:41:37

SQL删除注册表
点赞
收藏

51CTO技术栈公众号