一些实际工作中的总结
1、实际工作中收缩数据文件的情况比收缩库的情况多,不建议直接收缩数据库
2、收缩很容易出现等待,收缩会话对应sys.sysprocesses的字段waitresource值类似为15:1:4700649,sys.sysprocesses的字段lastwaittype值为PAGEIOLATCH_SH或PAGEIOLATCH_EX等
3、收缩数据文件时,不要一次性全部收缩。 可以每次收缩5G左右,比如DataFile1有32G,则每次收缩如下
USE UserDB;
DBCC SHRINKFILE (DataFile1, 27000);
GO
DBCC SHRINKFILE (DataFile1, 22000);
GO
4、数据文件的可用空间可以结合sys.master_files和FILEPROPERTY(name,'SpaceUsed')来查看
5、收缩的100%进度可以通过sys.dm_exec_requests的字段percent_complete来看
6、收缩完后,记得重建索引
alter index all on table_name rebuild with (>
收缩数据库的官方文档https://docs.microsoft.com/zh-cn/sql/t-sql/database-console-commands/dbcc-shrinkdatabase-transact-sql?view=sql-server-2017

本文总结了SQL Server中收缩数据库和数据文件的实际操作经验,包括为何不建议直接收缩数据库、如何避免等待问题、分步收缩数据文件的方法、如何查看可用空间和收缩进度,以及收缩后重建索引的必要性。提供了DBCC SHRINKDATABASE和DBCC SHRINKFILE的使用示例。
最低0.47元/天 解锁文章

1万+

被折叠的 条评论
为什么被折叠?



