SQL Server-事务日志管理



只是想澄清是否有人可以建议:

假设我们有一个事务日志文件,它最初设置为4GB,并以10%的增量自动增长。现在事务日志已增长到40GB。

问题:事务日志备份完成后是否会截断tlog,这意味着tlog将恢复到4GB或40GB(但现在36gb可重复使用)

问候

不,文件永远不会收缩——它是重复使用的,本质上是循环的。主.ldf(事务日志文件)由称为虚拟日志文件或VLF的较小文件组成。当它们为空时,它们会在LDF内部重复使用。如果所有VLF都已满,则日志文件将通过在LDF文件末尾添加新的VLF来增长。因此,通过百分比自动增长,您可能还会遇到日志文件碎片,这可能是性能杀手。

如果运行命令DBCC LOGINFO,您将获得一个结果集,其中包含主文件中所有虚拟日志文件的状态。这些VLF基本上是反复使用的。记住它本质上是圆形的。

因此,当你启动一个事务时,它会被写入一个VLF,当它被提交时,它在VLF上被标记为完成。如果您在每个检查点上以简单恢复模式运行数据库,这些提交的VLF文件将被清理并准备重复使用。如果您的数据库处于任何其他恢复模式,则即使已提交,这些VLF也不会被清除。当您进行事务日志备份时,这些VLF会写入事务日志备份,然后清除。这就是事务日志文件能够重放已提交事务的方式。

但是,包含这些VLF的LDF文件永远不会收缩。你真的应该阅读以下博客——这是一个真正了解交易日志的好地方:

http://www.sqlskills.com/blogs/kimberly/8-steps-to-better-transaction-log-throughput/

有一些关于这方面的非常详细的文章,所以请阅读上面的链接,它非常棒。

否。不会。备份不会截断日志。你试过收缩它吗?

最新更新