我的问题是,我应该定期运行一个或两个收缩命令,
DBCC 收缩数据库
或者
DBCC 收缩文件
==============================
背景
Sql Server:数据库为 200 gigs,日志为 150 gigs。
运行这个命令
SELECT name ,size/128.0 -
CAST(FILEPROPERTY(name, 'SpaceUsed') AS int) / 128.0
AS AvailableSpaceInMB FROM sys.database_files;`
产生这个输出..
MyDB:159.812500 MB 免费
MyDB_Log:149476.390625 MB 可用
所以似乎有一些可用空间。
我们的备份计划如下:
- 事务日志 每小时一次
- 每周两次完整备份
- 每周 5 次差异备份
我强烈建议您阅读Paul Randal关于为什么不应该缩小数据文件(日志文件是,数据文件不)的文章。
我不会引用或试图总结这篇文章,因为我真的不公平!只是我认为你至少应该知道的事情。
缩小文件的唯一优势是回收磁盘空间,但需要注意的是 -如果您的数据库只是要增长以再次填充该空间,那么从长远来看,缩小它实际上可能是有害的。这是因为,在缩减之后,SQL Server 将不得不随着磁盘空间的增长而回收磁盘空间(这需要时间,虽然不多),并且可能会导致物理磁盘上的碎片(更多的问题)。
如果文件变得比平时大得多,并且您想要恢复硬盘空间,那么请进行缩小。如果您只是想知道收缩是否应该成为您定期维护的一部分,那么它不应该。
正如rwmnau 所说,a
SHRINK
不是正常的维护 - 所以你不应该经常这样做。但是,鉴于您每小时备份一次日志并且有大约 150GB 的可用空间 - 我很想猜测您永远不会填写该日志。我可能会把
SHRINK
它调整到一个合理的大小,让它自动生长,直到你找到平衡为止。您不希望它在正常使用时自动增长,但我个人也不希望我的日志文件 99% 为空。要估计一个合理的起点,您可以估计一小时内的最大更改数(您的备份日志计划),或者在日志备份几个代表性周期之前检查已使用的大小。