毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 数据库 >> 正文

Oracle删除分区带来索引失效

更新时间:2013-4-9:  来源:毕业论文

Oracle删除分区带来索引失效
表data_01,有uuid,data_id,c_time以及其他一些字段。其中,uuid是主键,且是无任何意义。
采用组合分区。以c_time字段的区间分区和以data_id字段的散列子分区。同时,data_id和c_time可以唯一确定一条记录。


这样的表大概有10个,data_02....data_10。每个表中的data_id大概有1万。即共有10万个data_id,而每个data_id,每30秒会有一条数据。

现在,表中的数据过多,想删除一些分区。由于uuid是主键,其对应的有唯一索引,是全局的。删除会使全局索引失效,而重建索引又很慢。
如果换做data_id和c_time做联合主键,并以data_id和c_time联合做局部索引,可以解决删除分区带来索引失效的问题。但又会带来向表中插入数据很慢的问题。


不知道有没有更好的办法解决删除分区?
初次接触Oracle,还请各位大牛多多指教,。。。。

用“局部索引”代替“全局索引”即可解决问题!

1.从表设计的合理性来看,尽量不要用没意义的字段来做主键,建议你删掉uuid列,data_id和c_time做联合主键,并以data_id和c_time联合做局部索引。

2.可以选择在晚上执行:
alter table table_name drop partition xxx update global indexes;

uuid是主键、且无任何意义,为何不干脆drop该字段?

主键也不是必须有才行……

如果你能从业务控制不出现重复数据,并且有索引支持查询性能——我觉得,主键不要也罢。。。

如果有应用使用了uuid列不便删除的话,可以考虑保留字段删除主键

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。