互联网服务数据库

对分区表进行detach和attach后,是否必须对分区表进行reorg操作

db2 "create table test(id int,name varchar(10)) partition by range(id) (part1 starting 1,part2 starting 2,part3 starting 3)"
id=1的分区中存在1000W条记录,id=2的分区中存在5000W条记录,id=3的分区中存在1亿条记录

现在想把id=2的分区数据从当前库归档到历史库,归档完之后id=2的分区必须还存在,因为过几天这个分区又有新的几千万条数据进来,有如下两种方案:
方案一:
alter table test detach part2 into table t2;
alter table test attach part2 starting 2;
declar c2 cursor for select * from t2;
load from c2 of cursor insert into table test_his;
drop table t2;
reorg table test;

方案二:
declar c2 cursor for select * from test where id=2;
load from c2 of cursor insert into table test_his;
--类似如下进行分页删除,每10W条删除一次
delete from (select ROW_NUMBER() OVER(order by id,name) as rownum  from test)  t where t.ROWNUM>=1 and  t.ROWNUM<=100000


第一种方案,如果不需要执行reorg的话会很快,但因为执行了多次alter,为了不影响后续表的插入等操作,只有进行reorg了。
第二种方案,保守但可靠,只是执行时间长一点,目前采用的是第二种方案。

后续想法是,在UAT环境进行第一种方案的测试,如果表分区的detach和attach不需要对表进行reorg的话,就改为第一种方案。

如果第一种方案不需要reorg表也可以直接做,请各位大拿给出肯定答复,不胜感激。

参与6

1同行回答

haoqingyunhaoqingyun数据库运维工程师CMBC
分区表最显著的优势就是快速detach和attach,这两个操作本身没有任何data move,因此不会因为这两个操作而需要做reorg。显示全部

分区表最显著的优势就是快速detach和attach,这两个操作本身没有任何data move,因此不会因为这两个操作而需要做reorg。

收起
银行 · 2016-06-22
浏览1695

提问者

2013software
软件开发工程师交通银行

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2016-06-20
  • 关注会员:3 人
  • 问题浏览:2568
  • 最近回答:2016-06-22
  • X社区推广