管理事务日志文件的大小

在某些情况下,更改物理日志文件的大小可能会非常有用。

监视日志空间使用情况

可以使用 DBCC SQLPERF (LOGSPACE) 监视日志空间使用情况。此命令返回有关当前使用的日志空间量的信息,并指示何时需要截断事务日志。有关详细信息,请参阅 DBCC SQLPERF (Transact-SQL)。若要了解有关日志文件的当前大小、最大大小以及此文件的自动增长选项的信息,还可以在 sys.database_files 中针对此日志文件使用 sizemax_sizegrowth 等列。有关详细信息,请参阅 sys.database_files (Transact-SQL)

重要说明重要提示

建议避免日志磁盘重载。

收缩日志文件的大小

日志截断非常重要,因为它可释放磁盘空间以供重新使用,但它不会减小物理日志文件的大小。若要减小日志文件的物理大小,必须收缩此文件以删除一个或多个不包含任何逻辑日志部分的虚拟日志文件(即“不活动的虚拟日志文件”)。在收缩事务日志文件时,将从日志文件的末端删除足够的不活动虚拟日志文件,以便将日志减小到接近目标大小。有关详细信息,请参阅收缩事务日志

注意注意

能够延长虚拟日志文件活动时间的因素(如长时间运行的事务)可以限制甚至阻止日志收缩。有关详细信息,请参阅可能延迟日志截断的因素

有关详细信息,请参阅收缩事务日志

添加或扩大日志文件

可以通过扩大现有的日志文件(如果磁盘空间允许)或将日志文件添加至数据库(尤其是其他磁盘上的数据库)来获得空间。

  • 若要将日志文件添加至数据库,请使用 ALTER DATABASE 语句的 ADD LOG FILE 子句。添加日志文件可以使日志获得空间。有关添加文件的信息,请参阅添加和删除数据文件和事务日志文件

  • 若要扩大日志文件,请使用 ALTER DATABASE 语句的 MODIFY FILE 子句,并指定 SIZE 和 MAXSIZE 语法。有关详细信息,请参阅 ALTER DATABASE (Transact-SQL)

优化 tempdb 事务日志的大小

重新启动服务器实例可以将 tempdb 数据库的事务日志调整到在自动增长之前的原始大小。这会降低 tempdb 事务日志的性能。您可以通过在启动或重新启动服务器实例之后增加 tempdb 事务日志的大小来避免此开销。有关详细信息,请参阅 tempdb 数据库优化 tempdb 性能

控制事务日志文件的大小

可以使用 ALTER DATABASE (Transact-SQL) 语句管理事务日志文件的增长。注意以下事项:

  • 若要更改当前文件大小(以 KB、MB、GB 和 TB 为单位),请使用 SIZE 选项。

  • 若要更改增量,请使用 FILEGROWTH 选项。如果值为 0,则表明自动增长已设置为关闭,且不允许增加空间。

  • 若要控制日志文件的最大大小(以 KB、MB、GB 和 TB 为单位)或将增长设置为 UNLIMITED,请使用 MAXSIZE 选项。