MSSQL shrink数据库

文档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 ]
posted @ 2020-08-07 14:46  单眼皮Boy  阅读(371)  评论(0编辑  收藏  举报