表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,还请各位大牛多多指教,。oracle删除分区索引
采用组合分区。以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,还请各位大牛多多指教,。oracle删除分区索引
已经说了,data_id和c_time联合做局部索引(唯一所索引)会来插入数据效率问题。而uuid不是分区字段,也不能做局部索引吧
alter table table_name drop partition xxx update global indexes;
uuid当时加上去的确考虑欠妥。之所以没删,考虑是到对web的影响。
目前,一个多月的数据用update global indexes还行。一张表花了大概5min左右,等数据量达到一年,估计就不行了。