sql-server – Tempdb日志文件用法

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

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

解决方法

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

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

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

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

总而言之,您的tempdb日志的行为与预期完全一致.

希望这可以帮助.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...