【问题标题】:Deleting data from SQL Server is not affecting .mdf file size从 SQL Server 中删除数据不会影响 .mdf 文件大小
【发布时间】:2018-09-19 10:08:34
【问题描述】:

我在 SQL Server 中有一个数据库,其中 MDF 为 8gb。 其中大部分(如 95%)是我保留的一些日志,我可以删除它们(或截断)。

即使我删除了记录,MDF 仍然是同一个文件。实际上如果我使用删除它更大,如果我使用截断是完全一样的。

强制数据库反映新数据大小的正确方法是什么?

附言。我尝试将数据库转移到另一台服务器,在将数据从 8GB 移动并删除日志后,它是 350mb。但是在主服务器中,即使删除了日志,它仍然是 8GB。

【问题讨论】:

  • See also。最简单的方法是缩小数据库。正确的方法(或更确切地说是方法)涉及更多,因为收缩很慢并且会导致可怕的索引碎片。即使你必须缩小,重要的是确保不再需要它。
  • 我想避免收缩数据库,因为我相信它会变慢。正如你提到的重要的事情 - 这些是日志,所以它们会在某个时候再次填充。
  • 因此空间和速度之间的权衡。它会在收缩后变慢,但主要是在需要时分配新的范围,并且可能是难以察觉的差异。

标签: sql-server


【解决方案1】:

为了减小数据库文件的大小,您必须缩小它。收缩删除空页,类似于对文件系统进行碎片整理或压缩 Access 数据库。这可以通过在 Management Studio 中执行数据库任务菜单下的 Shrink 命令或执行 DBCC SHRINKDATABASE 命令来完成。

但要注意生产中的数据库缩小!首先了解收缩究竟是做什么的,例如阅读这篇文章:https://docs.microsoft.com/en-us/sql/relational-databases/databases/shrink-a-database?view=sql-server-2017

这篇文章很好地研究了缩小数据库然后重新组织/重建索引的影响。 https://www.brentozar.com/archive/2017/12/whats-bad-shrinking-databases-dbcc-shrinkdatabase/。缩小与碎片,磁盘空间与性能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    • 2011-01-09
    相关资源
    最近更新 更多