2013-08-07 226 views
0

只是想澄清,如果有人可以请告知:SQL服务器 - 事务日志管理

比方说,我们有最初设置为4GB的事务日志文件,并自动增长了10%的增量设置。现在事务日志已增长到40GB。

问:是否事务日志备份将截断TLOG一旦完成,则意味着TLOG将回到4GB或40GB(不过现在36GB供重复使用)

问候

回答

0

否该文件将永不收缩它被重新使用,并且是循环的。主.ldf(事务日志文件)由称为虚拟日志文件或VLF的较小文件组成。这些内容在空闲时会在LDF内部重用。如果所有VLF都已满,则通过在LDF文件末尾添加新的VLF来增加日志文件。因此,通过实现百分比的自动增长,您可能还有可能成为性能杀手的日志文件碎片。

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

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

但是,包含这些VLF的LDF文件永远不会收缩。你真的应该阅读下面的博客这是一个真棒的地方,真正理解事务日志:

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

大约有一些这方面的非常详细的文章,所以还是看上面的链接是极好的。

+0

叹息我没有建设性的评论downvoted ...请添加评论你为什么downvoted。我长大了,可以处理批评。 – Namphibian

-2

号它会不。备份不会截断日志。你尝试缩小它吗?

+0

因此,我怎么能知道,40GB,36GB可用于现在重新使用bcos我没有TLog备份。另外当应该做TLOG缩小 –

+0

你应该在做备份之前收缩,每次你执行缩小动作时文件会减少到1mb +。如果没有错误,则为日志文件设置4GB,它仅为日志文件分配4GB,这并不意味着用完4GB。您可以从您的ldf物理文件中检查以查看收缩后的实际大小是多少 – tsohtan

+0

永远不会缩小您的事务日志文件。这是不好的做法。这意味着你可能不理解恢复模式。如果您的日志文件快速增长,并且您不需要事务日志备份,请确保您正在简单恢复模式下运行。如果您需要TRANSACTION LOG备份并缩小文件,则会销毁事务日志备份链。 – Namphibian