每个人都警告不要缩小数据库,但它对我有用吗?1 GB db,现在删除了表 100 MB

Pet*_*ock 7 sql-server-2005 sql-server shrink

每个人都警告不要缩小数据库,例如 SQLAuthority

但在我的情况下它会是一个有效的选择吗?数据库最初超过 1 GB,但是从其中删除了一个表(移动到另一个数据库),当我备份它时,数据库现在是 100 MB,而 MDF 仍然超过 1 GB。

如果我缩小数据库,然后重建所有索引怎么办?这一切还是禁忌吗?

Tho*_*ger 7

就存储而言,1 GB 的数据库几乎为零。如果您真的想在那个级别节省空间,我很容易质疑环境细节。即使在一个小盒子上,1 GB 也可以忽略不计。

我建议您阅读缩小数据库文件(更具体地说是您的数据文件[s])的陷阱。 Paul Randal就这个主题写了一篇很棒的文章。这里的寓意是知道正在发生什么以及您正在对您的数据做什么。如果这是可以接受的,并且业务需要较小的数据库,那么请谨慎进行。在这种情况下,我将引用Paul Randal的推荐做法:

那么,如果您确实需要运行收缩怎么办?例如,如果您删除了一个非常大的数据库的很大一部分并且数据库不太可能增长,或者您需要在删除之前清空文件?

我喜欢推荐的方法如下:
- 创建一个新文件组
- 使用 CREATE INDEX … WITH (DROP_EXISTING = ON) ON 语法将所有受影响的表和索引移动到新文件组中,以移动表并从中删除碎片同时
- 删除您无论如何要缩小的旧文件组(如果它是主要文件组,则将其缩小)

基本上,您需要先提供更多空间,然后才能缩小旧文件,但这是一种更简洁的机制

您的数据库将永远不需要再增长到这个大小吗?当您考虑缩小数据库时,这是您应该首先考虑的主要问题。这一切都与适当的大小有关,不仅适用于今天,而且适用于可预见的长期未来

而且,最重要的是,不要把这部分作为日常维护。有关原因,请参阅 Paul 的博客文章。