首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TempLog.ldf太大了

TempLog.ldf太大了
EN

Database Administration用户
提问于 2018-10-08 09:44:28
回答 1查看 4.8K关注 0票数 0

我们有一个定期运行的存储过程。它在3-4个小时内将TempLog.ldf的大小从零放大到150 GB。怎么回事,为什么这么大?TempDB.mdf是一个常量的40 is。这是一个很好的尺寸,而且它永远不会变大。TempDB的恢复模型设置为Simple。AutoShrink关机了。

该过程不使用任何显式事务。它工作在大约500块数据中。有些很小,只有几百行。有些是非常大的,150万行。一块有1600万行。

对于每一块数据,过程如下:

  1. 将其行从持久性表读入#temp表1。
  2. 将这些行从#temp_table_1复制到另一个#temp表2中,并按其进行处理。
  3. 在#temp_table_2上创建非聚集索引。
  4. 在#temp_table_2上做许多更新。
  5. 删除#temp表2中的行,其中特定列包含null。
  6. 将#temp_table_2中的行复制到“持久”表中。
  7. 截断#temp表。

正如我所说,TempLog.mdf的大小始终保持在40 As,这是很好的。我需要知道为什么TempLog.ldf变得这么大,我能做些什么来缓解这个问题。在#temp表被截断之后,我尝试为TempDB添加一个手动检查点。这似乎没什么区别。

问题:

  1. TempLog.ldf是怎么回事?
  2. 在TempLog.ldf中为#temp表创建索引会占用很大的空间吗?
  3. 为什么当过程结束时,TempLog.ldf没有释放任何这个空间?
  4. 我能检查一下里面的内容来确定是什么占用了这么多空间吗?
  5. 还有其他关于可能发生的事情的想法吗?
EN

回答 1

Database Administration用户

发布于 2018-10-08 17:48:00

您可以使用DMV在Tempdb中观察事务日志的使用情况,然后可能对您的过程进行测试,并监视它在tempdb中的事务日志使用情况,以查看是否可以解释日志文件的增长,并可能确定对其有何贡献。

例:

代码语言:javascript
运行
复制
select database_transaction_log_bytes_used /1024. log_mb_used
from sys.dm_tran_database_transactions dt
join sys.dm_tran_current_transaction ct
  on dt.transaction_id = ct.transaction_id
where database_id = 2
票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/219516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档