是否有截断大型事务日志的替代策略? (> 200GB)
Is there an alternate strategy for truncating a large transaction log? (> 200gb)
我正准备针对类似问题尝试其他答案之一,但想问一下截断事务日志对于 200gb 的日志和我见过的很多 20gb 左右的示例是否会有所不同?
其他问题采用 20gb 的事务日志并将其减少到 1mb,对于 10 倍大小的事务日志,策略是否不同?
"Truncating the log" 是一个有歧义的术语。我假设您的意思是使用 DBCC SHRINKFILE 缩小事务日志的 LDF 文件。
不,过程没有显着差异。
请记住:您可能需要将日志文件缩小两次才能将其缩小到您想要的大小,因为您的事务日志将被使用。
运行 DBCC LOGINFO
对于所需的数据库,您将在事务日志中看到每个 VLF(虚拟日志文件)。状态为 2 的任何内容都处于活动状态并等待日志备份。如果您 运行 一个 DBCC SHRINKFILE 而不进行日志备份,您可以缩小到的最小大小是最大的 StartingOffset + FileSize,其中 Status 为 2。
如果您 运行 事务日志备份,当前正在使用的 VLF 的状态将保持为 2。它仍在使用中,因此它仍然处于活动状态。据我所知,DBCC LOGINFO 中列出的具有最大 FSeqNo 的 VLF 是当前正在使用的 VLF。这意味着如果您执行 LOG BACKUP 并立即 运行 DBCC SHRINKFILE,则最小大小将是具有最大 FSeqNo 的 VLF 的 StartingOffset + Filesize。您必须等待 VLF 填满并且服务器切换到新的 VLF,然后日志备份才会将此 VLF 标记为不活动,这样您就可以缩小 DBCC SHRINKFILE。
因此,缩小日志文件的最佳策略是:
- 分析您的数据库并activity找出问题所在和原因。
- 根据您的使用情况确定事务日志的最佳大小。
- 运行 备份日志。
- 运行 DBCC 收缩文件。
- 确定日志文件缩小了多少。
- 如果您的日志文件大小正确,则大功告成。
- 否则,监视 DBCC LOGINFO 以查看文件中 VLF 何时转入新的 VLF。
- 转到 3。
如果您需要生成事务日志数据以加快#6,请考虑运行宁索引重建。
请注意,以上#1 和#2 只有在您正确管理服务器的情况下才有可能。您以后需要重新访问服务器才能完成它们,但它们对于防止将来出现问题至关重要。
我还假设您没有 运行 简单恢复模式,因为使用简单恢复的数据库上的 200 GB 事务日志似乎相对不太可能。如果您正在 运行 进行简单恢复,这不太可能,那么您可以用 CHECKPOINT 命令替换上面的 BACKUP LOG。
我正准备针对类似问题尝试其他答案之一,但想问一下截断事务日志对于 200gb 的日志和我见过的很多 20gb 左右的示例是否会有所不同?
其他问题采用 20gb 的事务日志并将其减少到 1mb,对于 10 倍大小的事务日志,策略是否不同?
"Truncating the log" 是一个有歧义的术语。我假设您的意思是使用 DBCC SHRINKFILE 缩小事务日志的 LDF 文件。
不,过程没有显着差异。
请记住:您可能需要将日志文件缩小两次才能将其缩小到您想要的大小,因为您的事务日志将被使用。
运行
DBCC LOGINFO
对于所需的数据库,您将在事务日志中看到每个 VLF(虚拟日志文件)。状态为 2 的任何内容都处于活动状态并等待日志备份。如果您 运行 一个 DBCC SHRINKFILE 而不进行日志备份,您可以缩小到的最小大小是最大的 StartingOffset + FileSize,其中 Status 为 2。如果您 运行 事务日志备份,当前正在使用的 VLF 的状态将保持为 2。它仍在使用中,因此它仍然处于活动状态。据我所知,DBCC LOGINFO 中列出的具有最大 FSeqNo 的 VLF 是当前正在使用的 VLF。这意味着如果您执行 LOG BACKUP 并立即 运行 DBCC SHRINKFILE,则最小大小将是具有最大 FSeqNo 的 VLF 的 StartingOffset + Filesize。您必须等待 VLF 填满并且服务器切换到新的 VLF,然后日志备份才会将此 VLF 标记为不活动,这样您就可以缩小 DBCC SHRINKFILE。
因此,缩小日志文件的最佳策略是:
- 分析您的数据库并activity找出问题所在和原因。
- 根据您的使用情况确定事务日志的最佳大小。
- 运行 备份日志。
- 运行 DBCC 收缩文件。
- 确定日志文件缩小了多少。
- 如果您的日志文件大小正确,则大功告成。
- 否则,监视 DBCC LOGINFO 以查看文件中 VLF 何时转入新的 VLF。
- 转到 3。
如果您需要生成事务日志数据以加快#6,请考虑运行宁索引重建。
请注意,以上#1 和#2 只有在您正确管理服务器的情况下才有可能。您以后需要重新访问服务器才能完成它们,但它们对于防止将来出现问题至关重要。
我还假设您没有 运行 简单恢复模式,因为使用简单恢复的数据库上的 200 GB 事务日志似乎相对不太可能。如果您正在 运行 进行简单恢复,这不太可能,那么您可以用 CHECKPOINT 命令替换上面的 BACKUP LOG。