清理出一个非常大的 table

Cleaning out an insanely large table

我有一个备份 table - 由于一个数学不好的程序员计划不周的管理 - 里面有 3.5 亿 条记录。数据驱动器几乎已满,性能受到影响。我需要清理这个 table,但是一个简单的 SELECT COUNT(1) 语句需要 30 分钟或更长时间才能 return。

table上没有主键。

数据库使用 SIMPLE 日志记录。驱动器上只剩下 25gb,所以我需要注意,无论我做什么,都必须留下 space 数据库才能继续为其他人运行。我在输入此内容时正在等待确认,但我认为我现在不需要保留其中的任何数据。

在有那么多记录的 table 上,TRUNCATE TABLE 会导致系统停止运行吗?

同时查看此处提出的解决方案:How to delete large data of table in SQL without log?

我的想法是让我的客户在我做这一切的同时继续工作。

如果您不再需要这些记录,

Truncate table 将起作用。这不会减少数据库的大小。如果需要这样做,则需要缩小数据文件。

如果您想删除记录,Aaron Bertrand 在此处提供了很好的示例和测试结果:https://sqlperformance.com/2013/03/io-subsystem/chunk-deletes