我有一个大小为 270GB 的 SQL Server 数据库。近 91% 的空间在空间报告中显示为“未使用”。我知道未使用的空间是分配给特定对象的空间。应用程序团队对数据库进行了清除操作,但我们无法真正占用空间。
我已经检查了表上的索引碎片,但它们看起来不错。我还需要检查什么以及我应该做什么来释放该空间。数据库将来不会使用该空间。
根据我的理解
DBCC SHRINKFILE
仅释放未分配的空间。我读过有关 DBCC CLEANTABLE
和 DBCC SHRINK DATABASE
的内容,但不确定它是否足以执行。
如何有效释放对象未使用的空间。
所以根据我的理解,你首先需要缩小文件,然后你可以缩小数据库:
使用 SQL Server Management Studio:
缩小文件:r-单击数据库、“任务”、“缩小”、“文件”:然后选择一个比对话框中给出的“最小值”值稍大的新文件大小值。
收缩数据库:右键单击数据库,“任务”,“收缩”,“数据库”(勾选“重新组织文件”复选框)
这样,我就能够减少磁盘报告中“未使用”空间的百分比。但仍然剩下相当多的部分(20%)..我认为“重组”一些指数可能会有所帮助。
如果数据库中只有索引,那么您可以在创建新文件组并将所有索引移入其中后删除旧文件组。您可以使用
CREATE INDEX ... WITH DROP_EXISTING
移动索引
我编写了一个较大的表(架构和数据)的脚本,然后将其删除。
然后我就跑了 更改表 [dbo].[SomeTable] 重建; 该命令为我运行的每个命令释放未使用的空间
数据库是否快速收缩
然后运行上面的脚本将表和数据放回。