文档1:关于shrink database
文档2:shrinkfile 以及一些坏处
shrink目的/好处
释放空间
shrink坏处
- 导致阻塞
- 导致索引碎片
shrink限制
- 不能shrink比创建时的大小还小
- 不能在数据库备份时shrink.同理,不能在shrink时备份
- 事务运行row versioning-based isolation level会阻塞shrink,即一些delete/update等DML操作,见文档2
什么时候收缩
- sp_spaceusage
根据unallocated space决定是否需要shrink
use db_name
exec sp_spaceusage
- truncate/drop 表之后会非常有效
shrink语法
DBCC SHRINKDATABASE
( database_name | database_id | 0
[ , target_percent ]
[ , { NOTRUNCATE | TRUNCATEONLY } ]
)
[ WITH NO_INFOMSGS ]
DBCC SHRINKFILE
(
{ file_name | file_id } --file_name即logical name
{ [ , EMPTYFILE ]
| [ [ , target_size ] [ , { NOTRUNCATE | TRUNCATEONLY } ] ]
}
)
[ WITH NO_INFOMSGS ]