y331044508 发表于 2012-06-19 16:16

informix表分片问题

remainder分片detach下来后,如何再次把remainder分片attach上去,要保证remainder分片里面的数据完整?

> alter fragment on table ems_event_history detach partition remainder remainder_1w;

> select count(*) from remainder_1w;

      (count(*))
         65060
1 row(s) retrieved.

y331044508 发表于 2012-06-19 16:35

回复 1# y331044508


    做informix分片维护,detach一个分片时非常慢,发现表结构中出现了主键(primary key),删除主键后再对表detach时耗时在1秒中;
之后将detach下来的分片策略进行修改从新attach回去,发现非常非常慢,经过多次测试,发现是由于remainder分片中的数据和attach
分片中的数据时间有重复的,十有八九是否发生了数据迁移。。。强行停止操作,这时杯具发生了,导致库发生回滚(无奈等了3个小时),
最后直接先将remainder分片先detach掉,然后再对其他分片进行操作,这次就非常快了,但问题出来了,由于之前分片都满了,
新到的数据都储存在了remainder分片中,而且数据量很大如果进行导出导入的话就相当费时,
所以我想是否有办法直接将detach下来的remainder分片表直接又给attach回去,不知道是否可以行?

koolkite 发表于 2012-06-19 17:19

informix分片,分片策略制定比较关键,最好不好用到remainder的方式,另外如果要频繁detach,atach,创建索引时候,就不要制定存储空间,这样效率就会高很多

y331044508 发表于 2012-06-20 10:08

回复 3# koolkite


    我新增加的分片和之前分片的策略是一样的,只是把时间修改了下,我是按照时间做的策略。

koolkite 发表于 2012-06-20 11:40

如果按照时间所的分配,完全可以去掉remainder,你可以这样操作,先增加一个新的分片,再detach掉你想要detach的分片,另外表的索引存储位置要和数据一样,在同一个dbspaces中,要不然影响到detach的效率

koolkite 发表于 2012-06-20 11:49

你的IDS版本号多少?可以贴出来你的表分片策略,和业务情况,更好分析

y331044508 发表于 2012-06-25 13:31

实在不好意思,最近比较忙,没来得及上论坛看看。
经过这段时间我想出来一个解决办法,以下是我的思路,大家给看看是否有更简单的方法:
基本思路:
remainder分片detach下来,数据被存储到临时表remainder_1w中,我主要是想要remainder分片中的数据,
创建一个与ems_event_history表结构完全相同的表ems_event_history_new,然后将临时表中的数据insert到
ems_event_history_new表中,然后再将ems_event_history_new表挂载到ems_event_history下面的一个
分片上,最后从新创建remainder分片分片;

y331044508 发表于 2012-06-25 13:41

本帖最后由 y331044508 于 2012-06-25 13:55 编辑

发重了。。。:dizzy:
页: [1]
查看完整版本: informix表分片问题