清除表后表大小不减少

时间:2009-06-01 09:16:50

标签: sql sql-server database diskspace

我最近在我的应用程序表上执行了清除。总记录为1.1百万,磁盘空间使用11.12GB。

我删除了860k记录并保留了290k记录,但为什么我的空间只使用了11.09GB?

我会监控报告的详细信息 - 磁盘使用情况 - 数据文件使用的磁盘空间 - 使用的空间

我需要打包收缩数据文件吗?这一直困扰着我很久。

4 个答案:

答案 0 :(得分:3)

对于MS SQL Server,重建聚簇索引。

您只删除了行:没有回收的空间。

DBCC DBREINDEXALTER INDEX ... WITH REBUILD取决于verison

(这是MS SQL,因为磁盘空间报告在SSMS中)

答案 1 :(得分:1)

您需要显式调用一些缩小数据文件的操作(特定于您的数据库管理系统)。删除记录时,数据库引擎不会缩小文件,这是为了优化目的 - 缩小是非常耗时的。

答案 2 :(得分:0)

我认为这与Thunderbird中的邮件文件夹类似:如果删除某些内容,它只会被标记为已删除,但为了获得更高的性能,空间不会被释放。因此,您的大部分11.09 GB现在都包含旧数据或0。收缩数据文件将通过创建一个仅包含剩余实际数据的新文件来“压缩”(或“清理”)。

答案 3 :(得分:0)

可能你需要缩小表格。我知道SQL服务器默认不为你做,我猜这是出于性能原因,也许其他数据库都是一样的。