DB2 如何提高delete数据的效率,和表压缩

yanshouke 2009-08-31 08:57:26
在DB2的一张超大数据量的表里面,有5000万数据,我先根据条件删除掉其中的500万
,现在我执行这个操作十分缓慢,大概10分钟才删除掉20万数据的样子
请问有没有办法提高删除效率,而且这个操作是每天都要做的,并不不是做一次就行了.


还有个问题就是关于db2 9 中新加的功能,表压缩功能,是不是用了这个功能对表之间的管理,插入,删除等有效率上的影响啊!
压缩和不压缩到底哪个效率更高一些(数据库中有大量数据上千万的表)


谢谢回答!
...全文
790 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
quiettown 2009-09-14
  • 打赏
  • 举报
回复
ALTER TABLE stock ADD PARTITION dec03
STARTING FROM '12/01/2003' ENDING AT '12/31/2003';
看样子,您不喜欢看联机帮助,这样儿不对。
yanshouke 2009-09-14
  • 打赏
  • 举报
回复
是这样的,万一发现前几天的数据是有问题的,需要从新进行处理,这时候前几天的表没了可以重建上去,可是表分区如何恢复回去?然后再处理以前的数据呢?
像这样:我今天是15号,14号的A表分区已经被删掉了,而我发现14号的数据有问题,想重新做一遍,把14号B表的数据再导到A表中,但A表中已经没有14号的分区了?数据导入是肯定会报错的,此时如何解决?
quiettown 2009-09-05
  • 打赏
  • 举报
回复
举个例子,如果是以天进行数据维护,建一个365天的分区表,或365个小表,到了数据的维护周期就把它删除掉,觉得没有什么问题啊!
yanshouke 2009-09-03
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 syunka_tyo 的回复:]
如果表可以使用Table partitioning的话,用detach是最快的。
[/Quote]

可是DETACH有个却掉就是把整个partition都删除了,以后没没法在朝这个表里面插入这个partition键值的数据了! 有没有解决方案?
  • 打赏
  • 举报
回复
要下班了,明天再来
syunka_tyo 2009-09-02
  • 打赏
  • 举报
回复
如果表可以使用Table partitioning的话,用detach是最快的。
quiettown 2009-09-01
  • 打赏
  • 举报
回复
渔:http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp
dssbaisj 2009-09-01
  • 打赏
  • 举报
回复
你每天都要删除,插入数据,可以按照日期建分区表,这样会快些。
yanshouke 2009-08-31
  • 打赏
  • 举报
回复
你上面那个语句第2句中的temp 是个什么表,自己建的吗?
liyan93834183 2009-08-31
  • 打赏
  • 举报
回复
如果只删除一次的话,可以使用重新装载不删除的方式,比删除快很多,不过你每天都大量删除,这个方法不太实用,毕竟如果错误了不可恢复,还是按照条件建索引吧
压缩的表执行效率肯定要低一些,因为有利就有弊嘛
quiettown 2009-08-31
  • 打赏
  • 举报
回复
上面有说错,本地分区索引是9.7才上的。然后你误会俄的意思了,后面俄说的是把表分成许多小表,这些小表并不是分区表,而就是小表。。。
quiettown 2009-08-31
  • 打赏
  • 举报
回复

db2 "create table test (id smallint not null , value varchar (10) not null) partition by range (id nulls last) (partition p1 starting from (1) inclusive ending at (5) exclusive , partition p2 starting from (6) inclusive ending at (10) exclusive , partition p3 starting from (11) inclusive ending at (maxvalue) exclusive , partition p0 starting from (minvalue) exclusive ending at (0) exclusive )"
db2 "alter table test detach part p0 into temp"
db2 "drop table temp"
yanshouke 2009-08-31
  • 打赏
  • 举报
回复
2楼的你说表分区支持 单独的drop 操作步骤能不能给说下,我现在可以对表进行分区,可是至于删除某个分区的数据我不知道怎么写啊

高手指教啊!
quiettown 2009-08-31
  • 打赏
  • 举报
回复
9版本开始支持表分区,9.5可支持分区索引,可以尝试一下。把表分成多个小表,到时把小表DROP掉也是种方法。
在不对表进行REORG操作时,表中的数据是压缩不了的。插入,和删除其实也影响不了多少,但REORG操作很消耗性能,俄感觉磁盘碎片重组操作一样儿,最好是REORG数据已经更新完毕的表,否则。。。

5,888

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧