我有一个1.5TB的数据库,其中只有200 GB的空闲空间before.Due用于性能问题,业务决定将1个月的数据保留策略减少到1 week.Due到这3周的数据被删除,现在它有700 GB的空闲空间。
由于数据删除而增加的500 GB空闲空间不再需要,也没有机会再次增长数据来占用这500 GB空间。
如果碎片大于30%,我计划收缩数据库(使用收缩文件命令)并运行索引优化过程来重建索引。释放的空间不会被其他系统使用,但是在不久的将来可以有效地用于日志文件和temp的增长。
除了空间发布之外,减少数据库的大小对性能有什么好处吗?
以前与收缩有关的问题(在堆栈交换中)不能正确回答我的查询。
谢谢您的回复!
发布于 2018-05-17 07:27:23
如果您正像您所说的那样维护您的索引,那么就不会有性能上的好处。
实际上,性能会因为收缩而变得更糟,下一个索引重建工作可能要做的工作要比平时多得多。
人们认为数据库的收缩可以提高性能的最常见的原因是,引擎必须读取更少的查询页面,然而,通过缩小,您实际上不是在释放任何页面,而是在数据库中移动它们,从而导致碎片化和性能下降。您确实减少了数据库的总页数,但没有减少保存数据的已使用页面的数量。
另一点是,由于收缩过程是一个单线程进程,可能需要非常长的时间来收缩数据库。它还可能导致收缩期间的性能问题,并可能导致阻塞。
我强烈建议不要收缩。
对于您来说,一个选择可能是将数据传输到同一个数据库的一个新的、空的副本中,然后删除旧的数据库--这可能会更快、更整洁。
发布于 2019-08-21 13:44:36
收缩数据库被认为不是一个好的选择。
我们可能会认为缩小数据库会减少数据库的大小。然而,缩小数据库需要付出代价,即增加碎片。
由此产生的碎片降低了数据库性能。因此,为了减少碎片,您将进行索引重建,这将再次增加数据库的大小。所以,总体上没有收益。
您可以尝试重新组织索引,而不是重新构建它。这可能会有帮助,但不能保证。
但是,您可以缩小日志文件以释放一些空间。但是,请确保您在收缩之前已经进行了日志备份。另外,首先检查恢复模型并进行相应的操作。
https://dba.stackexchange.com/questions/207003
复制相似问题