看到测试服务器在负载测试过程中分配了12 GB中的12 GB,而tempdb日志文件增长到了8 GB。tempdb数据文件几乎没有文件空间的使用。在tempdb中运行DBCC,有超过几秒钟的时间内没有打开的事务。我正在运行Server 2005,读取快照隔离已关闭。
如何确定使用tempdb日志的是什么?
发布于 2009-06-24 15:46:45
在一些方面,Tempdb的日志与用户数据库中的日志不同。
在tempdb中,只记录撤消信息,而不是重做和撤消,因为tempdb中的事务只能回滚,从不前滚。这是因为tempdb从来没有在其上运行崩溃恢复,因此不会使用重做信息。如果这些术语对你没有任何意义,请参阅我的TechNet杂志关于理解Server中的日志记录和恢复的文章。不过,请注意,所有对tempdb进行更改的操作都将被记录-- tempdb不是“非日志记录”。
Tempdb的日志与其他数据库日志一样不清楚/截断(请再次参阅文章)。在tempdb中,日志将在检查点上截断(就像在常规的简单恢复模型中一样),但是检查点并不像在用户数据库中那样经常自动发生。在用户数据库中,检查点会尝试限制运行崩溃恢复所需的时间(通过将脏页强制到磁盘,从而限制必须执行的重做恢复的数量),并对页面更新进行批量处理,以减少执行的I/O总量。
因此,tempdb中的检查点只在tempdb日志使用达到日志总大小的一定比例时发生,大约70%,因为恢复时间无关。
总之,tempdb日志的行为与预期完全相同。
希望这能有所帮助。
发布于 2009-06-24 15:37:43
与任何其他事务日志一样,tempdb的日志也会增长。所有内容都会被记录,直到下一个检查点,此时日志条目被标记为能够被覆盖。默认情况下,检查点大约每分钟运行一次,所以如果在tempdb中发生了很多事情(而且由于您正在进行负载测试,可能会在tempdb中运行大量内容),那么日志就会像这样增长。
如果您的负载测试与您的生产负载相匹配,那么您可以期望您的生产tempdb日志也会增长到这个大小。
发布于 2009-06-24 15:34:43
您可以使用storage查看用户/应用程序正在执行哪些需要tempdb存储的操作。
https://serverfault.com/questions/31049
复制相似问题