Tempdb日志文件用法

Modified on: Wed, 15 May 2019 23:20:03 +0800

在负载测试的几个小时内,看到测试服务器将tempdb日志文件增长到8 GB,其中使用了12 GB。 tempdb数据文件几乎没有文件空间使用。在tempdb中运行DBCC OPENTRAN,没有打开的事务超过几秒钟。我正在运行SQL Server 2005并且读取快照隔离已关闭。

如何确定消耗tempdb日志的内容?

最佳答案

Tempdb的日志与用户数据库中的日志有几点不同。

在tempdb中,只记录UNDO信息而不是REDO和UNDO,因为tempdb中的事务只会回滚,永远不会前滚。这是因为tempdb从未运行崩溃恢复,因此永远不会使用REDO信息。如果这些术语对您没有意义,请参阅我的TechNet杂志上有关了解的文章SQL Server中的日志记录和恢复。但请注意,将记录对tempdb 进行更改的所有操作 - tempdb不是“未记录”。

Tempdb的日志不像其他数据库日志那样清除/截断(再次查看文章)。在tempdb中,日志将在检查点上截断(与常规SIMPLE恢复模型中一样),但检查点不会像在用户数据库中那样经常自动发生。在用户数据库中,检查点会尝试限制运行崩溃恢复所需的时间(通过将脏页强制转换为磁盘,从而限制必须执行的REDO恢复的数量)以及批量更新页面更新以减少整体已执行的I / O量。

因此,tempdb中的检查点仅在tempdb日志使用率达到日志总大小的某个比例时发生,大约70%,因为恢复时间无关紧要。

总而言之,您的tempdb日志的行为完全符合预期。

希望这有帮助。


相关问答

添加新评论