【发布时间】:2008-12-18 10:59:15
【问题描述】:
我的 SQL Server (2000) 上的日志文件过大时遇到了一些问题。 Microsoft 不建议对日志文件使用自动收缩功能,但由于它是一项功能,因此它在某些情况下一定很有用。有谁知道什么时候适合使用自动收缩属性?
【问题讨论】:
标签: sql sql-server database
我的 SQL Server (2000) 上的日志文件过大时遇到了一些问题。 Microsoft 不建议对日志文件使用自动收缩功能,但由于它是一项功能,因此它在某些情况下一定很有用。有谁知道什么时候适合使用自动收缩属性?
【问题讨论】:
标签: sql sql-server database
您的问题不是您需要定期自动收缩,而是您需要定期备份日志文件。 (我们每 15 分钟备份一次。)备份数据库本身是不够的,还必须备份日志。如果您不备份事务日志,它将不断增长,直到占用驱动器上的所有空间。如果您备份它,它会释放空间以供重复使用(在第一次备份后您可能仍需要缩小以将日志缩小到更合理的大小)。如果您不需要能够从事务中恢复(除非您的整个数据库包含从另一个源加载并且可以轻松重新加载的表,否则您应该能够做到这一点。),然后将您的日志设置为simlpe 恢复模式。
自动收缩不是一个好主意的一个原因是您将频繁地增加事务日志,这会降低性能。如果你备份日志,你会得到一个相对稳定的大小(备份之间的时间段内事务日志通常使用的空间量),那么如果有异常大的量,日志只会偶尔增长用于交易。
【讨论】:
我对此的看法是,当您有许多相当小的数据库由于添加的数据而经常变大,然后有很多空白空间时,自动收缩很有用。您也不必介意当文件频繁增长和缩小时,它们会在磁盘上产生碎片。我永远不会在关键数据库或大于 2 GB 的数据库上使用自动收缩,因为您永远不知道收缩操作何时开始,并且在收缩完成之前对数据库的访问将被阻止。
【讨论】:
您不应该开启自动收缩功能。它以多种方式导致性能下降。文件系统和索引变得碎片化并且非常耗费资源。如果您正确管理备份,也没有必要。
Read this answer from Paul Randal on Server Fault 并说拒绝自动收缩!!
【讨论】:
当我们有一个大型数据库的演示版本时,我曾经使用它,它占用了笔记本电脑上的大量空间,因此我们使用它来减小大小。
关键是数据基本扔掉的时候才用。
作为备份策略的一部分,您应该定期截断日志。
【讨论】: