有几个表分别有几千万的记录需要删除,同时有业务在跑,不能中断
有分区表,直接删除分区表很快,但是会导致全局索引不可用,会影响正常的业务,delete即使分批也很慢
请什么快的删除方法或好的建议?谢谢了!
------解决方案--------------------
Truncate Table
--不可回滚
------解决方案--------------------
这个就需要权衡了
1. truncate分区以后再重建索引。在此期间业务的相关语句的查询效率可能会受到影响
2. 分批delete以后再truncate,索引不会失效。但删除时间较长
3. 临时创建一个local索引,用来在全局索引失效时临时使用。两个索引的字段不能相同,但可以在原全局索引的字段后面加一个占用空间较小的字段来绕过去。然后truncate分区,再重建全局索引,最后删除临时的local索引。临时索引会占用额外的空间
------解决方案--------------------
还是建议去分批delete,再truncate。
几千万肯定是几个月积累下来的,没有实时去删除吧!要不搞一个作业找个业务量发生较少的时间段去删除。
------解决方案--------------------
学习!

------解决方案--------------------
非得一下删了吗?一天删一点可以吗?
------解决方案--------------------
为什么要删除在线数据?
------解决方案--------------------
建议采用蚂蚁啃骨头的方法,每 10 分钟提交一个任务,每次删除一批(比如:10W 条),一天就可以啃掉 1440W 条,如果你 8000W 条,有 5 天半就啃完了,这样对业务影响也比较小。
------解决方案--------------------
如果这种删除属于常态,在设计表的时候就应该建立12个表,每个月一个表,这样操作也应该效率会很高吧