首页 新闻 会员 周边 捐助

SQL如何高效安全批量删除数据

1
悬赏园豆:20 [待解决问题]

场景:
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

蔡风剑的主页 蔡风剑 | 初学一级 | 园豆:184
提问于:2021-09-24 17:41
< >
分享
所有回答(4)
0

没有什么操作比删除文件更快。这种数据量,又不是大公司,估计是机器数据或者操作日志(也是机器数据)吧,如果是这个年头好歹应该用合适工具吧,而不是关系库。

花飘水流兮 | 园豆:13615 (专家六级) | 2021-09-24 18:54
0

1.删除之前做好备份(万一删了 还能恢复)
2.删除操作选在无人或者操作量比较小的时候进行,比如凌晨3-4点钟
3.如果一次删除40万需要很复杂的逻辑处理, 可以分批,分事务, 比如存储过程里面建立事务, 一次处理10万条

兴想事成 | 园豆:540 (小虾三级) | 2021-09-24 19:35
0

应该是计算机问题

阿山早 | 园豆:410 (菜鸟二级) | 2021-09-25 18:58
0

非机器数据,这个是订单重要数据

蔡风剑 | 园豆:184 (初学一级) | 2021-10-07 09:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册