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的盒子。如果盒子里只有一半的玩具,即使你没有使用收缩
,你也可以把其他玩具放进这个盒子里(makeinsert
/update
)。相反,收缩
所做的是,它将所有玩具集中在一个角落,然后切割你的盒子,使其成为50cm x 50cm x 50cm。这样,您的房间(操作系统)现在有了更多的可用空间,因为您的玩具盒只占用了收缩前的一半空间
…如果你的盒子已经满了,你就不能再添加玩具了,即使你想缩小
如果日志已满,则收缩日志应该不是问题,对吗
Shrinkig log
是另一个过程,不能在日志文件中移动任何内容,从这个意义上讲,当然Shrinkig
不会像数据文件
那样造成太大伤害:它不需要服务器资源,也不会导致任何碎片等。
但成功与否取决于“日志已满”的原因
如果您的日志因完整型号
而已满,则缩小日志文件不会改变任何内容:保留日志是为了使您能够拥有日志备份链
(或使镜像
,或日志传送
,等等)
相反,如果您的数据库恢复模式很简单,并且打开了很长一段时间的事务出现了一些问题,或者加载了大量数据(可能是使用完整日志记录,例如插入而不使用tablock
)你的日志文件
比数据文件
大了,你发现并解决了这个问题,你不需要这么大的日志文件
,是的,你可以将它缩小到合理的大小,而且不会有什么害处。这与编程(本网站的全部内容)无关,但是对于DB管理,所以这是离题的,属于投票的范畴。