我正在从 SQL Server 2008 中的一个表中删除 2.57 亿行。我无法截断它。不过我本可以做得更聪明一些。
删除 2 小时后,日志文件增大,磁盘空间不足。查询仍在运行。
该怎么办?删除会成功吗?
答案1
等待 tx 回滚,删除将不会成功。或者加载备份 - 可能会更快。
要么逐步删除(每次 10,000 个),要么确保您的服务器足以满足您的需求。所有这些都可以在那里完成。
答案2
与 2.57 亿条删除记录相比,您需要在表中保留多少条记录?如果该数字较小,则将这些记录批量插入到新表中,使用 ALTER TABLE SWITCH 切换表并删除旧表。
http://jahaines.blogspot.com/2009/12/sql-server-2005-how-to-move-10-millions.html
另一个有趣的想法是设置分区并删除旧的分区。
http://blogs.msdn.com/b/bartd/archive/2010/06/01/purging-data.aspx