use*_*148 5 sql-server shrink fragmentation ssd
我有数据库,我的任务是将两个数据库 DBName1 和 DBName2 移动到 SSD,而我在 SSD 上只有有限的空间来容纳这些数据库。出于显而易见的原因,我不想缩小日志或数据文件,Brent 或 Paul 可能会去疯狂的。我注意到数据库没有增长太多,它使用的是最初分配的一部分。日志文件的初始大小分别为当前大小 41GB 和 147GB。当我检查 DBCC SQLPERF(logspace) 时,我发现 41017.3 MB 日志大小和 0.4339632 % 日志空间使用 % 和状态 0 147474MB 日志大小和 0.08165617 日志空间使用 % 和状态 0。
Database Name Log Size (MB) Log Space Used (%) Status
DBNAme1 41017.3 0.4339632 0
DBName2 147474 0.08165617 0
Database files(Sp_Spaceused)
database_name database_size unallocated space
DBName1 126294.31 MB 67443.73 MB
reserved data index_size unused
18261272 KB 8347376 KB 9677480 KB 236416 KB
database_name database_size unallocated space
DBName2 271075.31 MB 115074.44 MB
reserved data index_size unused
8731200 KB 5634520 KB 12976 KB 3083704 KB
Run Code Online (Sandbox Code Playgroud)
你觉得我该怎么做。我需要能够使用 SSD。是否值得缩小,或者您是否考虑其他回收可用空间的方法?我知道缩小是最后的手段。
小智 2
冒着发表不受欢迎声明的风险,我认为缩小规模对你来说可能是一个不错的选择。让我解释...
缩小数据库数据文件几乎肯定会导致碎片。这对于生产数据库至关重要,因为您可能没有时间在收缩后对数据库进行碎片整理。
不过,听起来你还有一些空闲时间。也许您可以将数据库恢复到非生产服务器上,您将有充足的时间和资源来缩小数据库并进行碎片整理。然后您可以将这些数据库迁移到 SSD。
当然这需要时间。您可能需要在生产中保留日志备份,以便可以前滚更改,或者可能设置复制之类的功能来保持数据同步。
会对其他人的想法以及你最终选择做什么感兴趣。