Sql server 使用SQL Server的最佳实践是什么?

Sql server 使用SQL Server的最佳实践是什么?,sql-server,database,shrink,maintenance-plan,Sql Server,Database,Shrink,Maintenance Plan,我读过很多书,不建议使用收缩数据库的做法,因为它会导致碎片,从而导致性能降低 参考: 但是,数据文件的情况似乎是这样,如果日志已满,则收缩日志应该不是问题,对吗 如果数据文件很大,占用了很多空间,我确实需要更多的空间来插入和更新一些新数据,这显然会减少驱动器上文件的大小,我认为我可以使用可用空间插入新数据。但如果不建议收缩,我如何解决这个问题?什么时候使用收缩器最好 如果数据文件很大,占用了很多空间,我确实需要更多 插入和更新一些新数据的空间明显减少 驱动器上文件的大小,我认为可以使用它 插

我读过很多书,不建议使用收缩数据库的做法,因为它会导致碎片,从而导致性能降低

参考:

但是,数据文件的情况似乎是这样,如果日志已满,则收缩日志应该不是问题,对吗

如果数据文件很大,占用了很多空间,我确实需要更多的空间来插入和更新一些新数据,这显然会减少驱动器上文件的大小,我认为我可以使用可用空间插入新数据。但如果不建议收缩,我如何解决这个问题?什么时候使用收缩器最好

如果数据文件很大,占用了很多空间,我确实需要更多 插入和更新一些新数据的空间明显减少 驱动器上文件的大小,我认为可以使用它 插入新数据的可用空间

如果数据文件占用大量空间,并不意味着该空间是空的

您应该使用
sp_spaceused
确定数据文件中是否有未使用的空间

如果有未使用的空间,它将被用于“插入和更新一些新数据”,如果没有则执行
收缩
不会改变任何内容:
收缩
不会删除您的数据,它所做的一切就是移动文件开头的数据,在文件结尾留出空间,以便将数据返回给
操作系统

如果您有一个2Tb的数据文件,并且删除了1 Tb的数据,并且您不打算在未来10年内再插入另一Tb的数据,那么缩小数据文件是非常有用的

你可以把你的
数据文件想象成一个1m x 1m x 1m的盒子。如果盒子里只有一半的玩具,即使你没有使用
收缩
,你也可以把其他玩具放进这个盒子里(make
insert
/
update
)。相反,
收缩
所做的是,它将所有玩具集中在一个角落,然后切割你的盒子,使其成为50cm x 50cm x 50cm。这样,您的房间(操作系统)现在有了更多的可用空间,因为您的玩具盒只占用了收缩前的一半空间

…如果你的盒子已经满了,你就不能再添加玩具了,即使你想缩小

如果日志已满,则收缩日志应该不是问题,对吗

Shrinkig log
是另一个过程,不能在
日志文件中移动任何内容,从这个意义上讲,当然
Shrinkig
不会像
数据文件
那样造成太大伤害:它不需要服务器资源,也不会导致任何碎片等。 但成功与否取决于“日志已满”的原因

如果您的日志因
完整型号
而已满,则缩小日志文件不会改变任何内容:保留日志是为了使您能够拥有
日志备份链
(或使
镜像
,或
日志传送
,等等)


相反,如果您的数据库
恢复模式
很简单
,并且打开了很长一段时间的
事务
出现了一些问题,或者加载了大量
数据
(可能是使用完整日志记录,例如
插入
而不使用
tablock
)你的
日志文件
数据文件
大了,你发现并解决了这个问题,你不需要这么大的
日志文件
,是的,你可以将它缩小到合理的大小,而且不会有什么害处。

这与编程(本网站的全部内容)无关,但是对于DB管理,所以这是离题的,属于投票的范畴。