我为数据库中的一个大型表执行了索引重建,因为它是85%的碎片。索引重建完成后,数据库文件的大小从19 GB增加到27 GB。
重建选项:
(PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = ON, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)我的问题是:在不增加索引碎片的情况下,是否有减少数据库文件大小的解决方案?
发布于 2018-12-26 17:43:53
用户比朱·何塞在评论中对你的问题框架提出了质疑,我认为这可能是你能得到的最有帮助的答案:
我认为您不应该缩小数据库以恢复空间,因为一旦您进行了重新构建之后,它将再次增长。这里的要点是,您的数据库也应该有空间来容纳您的维护任务!
如果您真的迫切需要这8 GB的空间返回,您可以使用DBCC SHRINKFILE的数据文件,以缩小它的一些。但是,请注意,这可能会导致一些碎片。这里详细描述了这个无益的循环(碎片->重新构建->空空间->收缩->碎片->重复):
如果您想要一个更好的不收缩文件的其他原因的集合,请检查这个(以及它链接到的所有文章):停止缩小数据库文件。我是认真的。现在。
伦道夫·韦斯特在注释中很有帮助地指出,如果您确实需要减少碎片,而不需要过多地扩展文件,则可以对索引执行REORGANIZE。这需要比索引更少的工作空间,但也只能消除某些类型的碎片(它重新排列和压缩索引的叶页,但不像REBUILD那样拖放和重新创建整个过程)。
https://dba.stackexchange.com/questions/225664
复制相似问题