SQL Server TempLog.ldf太大

时间:2018-09-27 15:45:59

标签: sql-server

我们有一个定期运行的存储过程。它会在3-4个小时内将tempfile.ldf的大小从零扩展到150 GB。发生了什么,为什么这么大? TempDB.mdf是恒定的40GB。这是一个很好的尺寸,并且永远不会变大。 TempDB的恢复模型设置为“简单”。自动收缩功能已关闭。

该过程不使用任何显式事务。它可以处理大约500个数据块。有些很小,只有几百条记录。有些记录非常大,有1-5百万条记录。其中一个记录有1600万条记录。

对于每个数据块,过程

  1. 将其记录从持久性表读取到#temp表1中。
  2. 将这些记录从#temp表1复制到另一个#temp表2, 处理它们。
  3. 在#temp表2上创建索引
  4. 对#temp表2进行许多更新。
  5. 从#temp表2中删除记录,其中特定字段为null
  6. 将记录从第二个临时表复制到持久表中。
  7. 截断临时表

正如我所说,TempLog.mdf的大小始终保持在40GB。我需要知道为什么TempLog.ldf变得如此之大,以及我可以采取哪些措施来缓解该问题。在#temp表被截断后,我尝试为TempDB添加一个手动检查点。这似乎没有什么不同。

问题:

  1. TempLog.ldf中发生了什么?
  2. 在#temp表上创建索引会占用TempLog.ldf中的大量空间吗?
  3. 我可以检查里面的东西以确定什么占用了这么多空间吗?
  4. 关于可能发生的事情还有其他想法吗?

谢谢, 罗比

0 个答案:

没有答案