【问题标题】:How to release unused space in a SQL Server database如何释放 SQL Server 数据库中未使用的空间
【发布时间】:2015-12-24 01:40:09
【问题描述】:

我有一个大小为 270GB 的 SQL Server 数据库。几乎 91% 的空间在空间报告中显示为未使用。我知道未使用的空间是分配给特定对象的空间。应用程序团队对数据库执行了清除操作,但我们无法真正声明空间。

我已经检查了表上的索引碎片,但它们看起来不错。我还需要检查什么以及我应该做些什么来释放该空间。数据库将来不会使用该空间。

据我了解DBCC SHRINKFILE 仅释放未分配的空间。我读过DBCC CLEANTABLEDBCC SHRINK DATABASE,但不确定它是否足够好。

如何有效地释放对象中未使用的空间。

【问题讨论】:

  • 这因数据库而异,您必须指定您使用的 SQL 数据库。在 SQLite 中,它是 VACUUM。使用 MySQL,也许 OPTIMIZE TABLE
  • 如果您的数据库处于完全恢复模式,是否可以将其切换为简单恢复。然后收缩数据和日志文件。看看是不是变小了。将数据库设置回完全恢复模式。
  • 这真的与 programming 没有任何关系(this site all about),但是与数据库管理 - 所以这里是题外话,属于dba.stackexchange.com - 投票移动。

标签: sql-server database-administration


【解决方案1】:

据我了解,您首先需要缩小文件,然后才能缩小数据库:

使用 SQL Server Management Studio:

  1. 收缩文件:右击 DB、“任务”、“收缩”、“文件”:然后选择一个比对话框中给出的“最小值”值略大的新文件大小值。

  2. 收缩数据库:右击 DB、“任务”、“收缩”、“数据库”(勾选“重新组织文件”复选框)

有了这个,我能够减少磁盘报告中“未使用”空间的百分比。不过还有相当多的剩余(20%)。我认为“重组”一些索引可能会有所帮助。

【讨论】:

    【解决方案2】:

    如果您的数据库中只有索引,那么您可以在创建新文件组并将所有索引移入其中后删除旧文件组。您可以使用 CREATE INDEX ... WITH DROP_EXISTING 移动索引

    【讨论】:

      猜你喜欢
      • 2012-12-26
      • 1970-01-01
      • 1970-01-01
      • 2015-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多