消息 5145:数据库日志文件的自动增长用了 1010871 毫秒

Luc*_*cky 2 performance sql-server transaction-log update auto-growth

过去,我有一个运行了 7 天的更新查询。我找不到解决方案,所以我创建了一个带有索引的新数据库。更新查询现已运行 26 小时。

我看到如下消息:

数据库 'database1' 中文件 database1_log 文件的自动增长用了 1010871 毫秒。考虑使用 ALTER DATABASE 为该文件设置较小的 FILEGROWTH。

数据库 'database1' 中文件 'database1.log' 的自动增长耗时 79342 毫秒。考虑使用 ALTER DATABASE 为该文件设置较小的 FILEGROWTH。

  • 数据文件为40GB
  • 日志文件为 50 GB,自动增长设置为 10%

我真的不明白该怎么办。

Stu*_*ore 5

该错误是由 SQL Server 花费多长时间来增加事务日志引起的。

假设您引用的错误消息是针对最后一次增长的,SQL Server 声称 SQL Server 需要大约 17 分钟才能将不到 5GB 的数据添加到您的事务日志文件中。

这可能是由许多问题引起的:

  • 慢盘:如果您的磁盘特别旧且速度慢,则 SQL Server 将需要更长的时间来扩展文件

  • 磁盘争用:如果 SQL Server 不得不竞争对磁盘的访问,那么扩展它们会很慢。造成这种情况的常见原因可能是只有 1 个磁盘用于操作系统、数据和日志,或者计算机上的另一个应用程序访问与 SQL Server 相同的磁盘

您可以尝试多种方法来缓解此问题:

  • 如果可能,将您的文件移动到单独的物理磁盘上。通常,您希望有 3 个磁盘用于操作系统、数据和日志。

  • 使用更快的存储。如果您可以升级磁盘,那么这将减少等待自动增长完成的时间

  • 将自动增长设置修改为固定大小。这样,您将获得持续增长,而不是像当前百分比设置那样呈指数增长。在大量文件增长事件和等待增长发生之间选择一个可接受的折衷值。

  • 重新创建您的数据库,并预先分配容纳您计划运行的查询所需的日志文件。这将删除自动增长事件(除非您超过该大小)。

希望有帮助。