有条件删除海量数据时,涉及的日志及空间问题
目前该表约有22亿数据,存储的是每天每小时的统计数据,每天每小时约50W的统计数据。(不要问我为什么这么搞,我也不知道。)
该表已经分区,分区粒度为若干个月,我同样也不知道为什么是无规则的若干个月。
每个分区的数据量为:1089266596、962350288、192485096(10亿,9.6亿,1.9亿)
因为占用存储空间太大,现决定,只保留每天23-24这个时点的统计数据,即:要清除另外23个小时的统计数据。
现在有三个问题:
1、如果只在当前表上进行DELETE操作,DELETE操作不会释放空间,并不能解决空间占用的问题。
2、DELETE操作,会记录日志,这么大数据量的操作,日志也会太大。恢复模式已经设置为“简单”了。
3、DELETE操作,即使按分区,操作时间也会很长吧。是否会超时导致失败?
目前的想法,建立一张临时表,对应的数据文件在另一个空间足够的磁盘上。
然后将每天23-24点的统计数据初始化到这张临时表。
然后,对当前22亿的表进行TRUNCATE操作。
然后,再将临时表的数据重新插入到目标表。
不知道是否可行。因为是在生产库上进行操作。担心如下几点问题:
1、22亿数据的TRUNCATE操作是否会产生不良影响
2、将临时表的数据插入到目标表的开销。
3、插入操作是否会产生大量日志,能否不记录操作日志呢?
盼大家给出意见和建议。