升级到 SQL Server 2008 后,数据库日志文件不成比例地增长

升级到 SQL Server 2008 后,数据库日志文件不成比例地增长

从 SQL2005 升级到 2008 SP1 后,我们突然发现在大型事务期间数据库日志文件出现不成比例的扩展。

示例:在同一个事务中向表 B 插入 7500 万行数据,从表 A 中删除相同的 7500 万行数据。总数据量约为 20GB 的 2 倍,但数据库日志文件增长到 150GB 甚至更多。

升级之前,从未在 SQL2005 中见过这种情况。

我在任何地方都找不到将此记录为 SQL2008 中的已知回归。有人也见过这个吗?

谢谢

最大限度

答案1

您始终可以使用 fn_dblog() 分析日志内容并了解增加来自何处。使用简单恢复,日志可能会翻转并且无法分析,因此出于分析目的,我建议将恢复更改为完整,对 /dev/nul ( backup database ... to disk='nul:') 进行虚拟完整备份并重新运行您的事务。如果可能,记下事务 ID(查看sys.dm_tran_active_transactions) 然后查看select ... from fn_dblog(null, null) where [TransactionID] = 'xactid'输出并查看生成了哪些类型的记录,以便您的日志增长到 150Gb。保留空间是与您相关的列。最后,如果可能的话,与 SQL 2005 上的内容进行比较。

之后,您可以将恢复模式恢复为简单模式。不过请注意,简单模式下的日志保留行为可能与完整模式下的日志保留行为不同,但如果发生这种情况,我们将在遇到这种情况时解决这个问题。

答案2

运行 SQL Server 的计算机上的事务日志意外增长或已满

这是针对 SQL 2005 的,但也可能与 2008 相关。

答案3

您的事务日志可能设置为自动增长。请关闭该设置并将日志文件设置为固定大小。

答案4

这是因为您的日志文件记录了所有内容,我建议您通过以下方式修剪数据库日志文件:收缩数据库任务。请记住在备份后执行此操作。

Tsql 来做:

USE [N2CMS]
GO
DBCC SHRINKDATABASE(N'MyDataBase', 10, TRUNCATEONLY)

根据你备份的方式,你的备份软件应该能够做到这一点

相关内容