首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Server数据库释放未使用的空间

从Server数据库释放未使用的空间
EN

Database Administration用户
提问于 2013-11-22 11:31:17
回答 1查看 5.5K关注 0票数 7

我们已经从一个两位数兆字节大小的数据库中删除了很大一部分数据,现在我们想把一些空间放回操作系统。该数据库目前约有80 %未使用的空间。它再也不会达到以前的规模了(负载已经转移到其他地方了)。

我们尝试在单独服务器(非生产)上的数据库副本上运行SHRINKDATABASE。运行了2天(在我们的硬件上),它能够释放空间。

我假设它在生产中在数据库上花费的时间要长得多,因为这是大量使用的(不过,现在主要用于查询,而不是插入)。

在生产系统上,只有几个小时的停机时间(一次)是可以接受的。在较长的时间内,一些性能下降也是可以接受的。

对于如何释放这么多未使用的空间,而不需要过多的停机时间,或者在此过程中引入严重的性能退化,有什么想法吗?

EN

回答 1

Database Administration用户

发布于 2013-11-23 23:02:55

刚删除了我以前的答案,因为我开始为这类问题提出一个典型的问题。如果这个标记不起作用,在这里给你一个简短的答案。

你有几个选择。这里有一个很大的“警告”--收缩并不总是一件好事,它会破坏你的索引并花费一些时间。所以要谨慎行事。

  1. 您可以使用DBCC SHRINKFILE将其缩小为较小的“块”。优点:不需要开发,可能比迁移更少的停机时间。缺点:你仍然在缩小一个数据库,你仍然需要处理零碎的索引,但是你还是应该做一些索引重建,因为你已经删除了很多数据。
  2. 您可以构建一个新的数据库并在其中选择数据。优点:你没有退缩。你开始“新鲜”和干净了。您可以利用这段时间进行其他清理。缺点:可能要付出更多的努力,而不仅仅是缩小块,可能需要一个更大的下窗口,这取决于环境的复杂程度。在脚本中遗漏某些东西的潜在风险。
  3. 如果选择收缩路径,请记住重新构建索引并处理所产生的碎片。
票数 5
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/53787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档