问题描述:
某表数据量在1亿左右,通过时间在建表时创建了分区,现在因为业务需要,需要删除某个时间段内的数据,如果要是用delete去删除这么多的数据,我还要写存储过程,分批提交的这样做,因此使用删除分区数据的方式。就是这样的一简单的truncate partition 引发了后继的业务故障。最终查询到该表的索引失效,重建立后恢复。
原因分析:
在使用truncate partition删除分区数据时,需要加上update index参数。要不然会导致索引状态为不可用。
正确删除分区数据的语句为:
alter table test_partas truncate partition p1 update indexes;
如果索引状态为不可用,需要重新建立索引需要重新建立索引,要加online ,尽量减小对业务的冲击