场景:
SQL SqlServer 单表当前数据增长量每天40W,需要对历史数据进行清理,
问题:
如何高效安全的批量删除数据,每天清理量大于增长数
如下SQL会像delete in 产生死锁问题吗
with tmp_deletetable as(
select top 1000 id from a with(nolock) WHERE LastModifyTime<dateadd(day,-30,getdate()) and SendState='1'
)
delete a from a t1,tmp_deletetable t2 where t1.id=t2.id
没有什么操作比删除文件更快。这种数据量,又不是大公司,估计是机器数据或者操作日志(也是机器数据)吧,如果是这个年头好歹应该用合适工具吧,而不是关系库。
1.删除之前做好备份(万一删了 还能恢复)
2.删除操作选在无人或者操作量比较小的时候进行,比如凌晨3-4点钟
3.如果一次删除40万需要很复杂的逻辑处理, 可以分批,分事务, 比如存储过程里面建立事务, 一次处理10万条
应该是计算机问题
非机器数据,这个是订单重要数据