使用全局临时表的TempDB日志文件增长

时间:2009-08-13 00:19:12

标签: sql-server logfiles temp-tables

这真是一个双重问题。

一,我在使用全局临时表时会遇到SQL服务器消耗大量tempDB log 文件空间的现象,而使用本地临时表会消耗数据文件空间?

这是正常的吗?在使用全局临时表与本地临时表时,我无法在Web上找到以这种方式使用日志文件空间的任何地方。

二,如果这是预期的行为,有没有办法告诉它不要这样做:)。我有足够的数据空间(6 GB),但我的日志空间有限(750 MB,增长有限)。像往常一样,tempDB是使用Simple Recovery设置的,因此运行到日志文件空间限制之前从未出现过问题...但是我从未使用全局临时表,就像我之前使用它们一样。

谢谢!乔尔

3 个答案:

答案 0 :(得分:1)

当创建任何形式的临时表(本地或全局)时,表将在物理上创建并存储在tempdb数据库中。因此,这些表上的任何事务活动都记录在tempdb事务日志文件中。

每个说法没有设置,但是您可以实现物理表而不是临时表,以便将数据存储在用户数据库中,从而使用该数据库的关联数据和事务日志文件。

如果您真的想陷入并了解tempdb数据库,请查看以下资源。

Everyning you ever wanted to know about the tempdb database

答案 1 :(得分:0)

其中一个全局临时表的生命周期是多少?它们是否在合理的时间内掉线?当用户断开连接时,“常规”临时表会被删除,如果不是在此之前手动断开,则当创建会话结束时,如果内存服务,则“全局”(##)临时表将被删除。如果全局临时表持续很长时间,我可以看到日志增长,因为管理临时表活动的日志记录仍然可以标记为活动日志记录,并且不会被日志备份释放(完全恢复)或检查站(简单)

答案 2 :(得分:0)

如上所述,会话的长度会产生影响。

此外,临时表在事务中工作,表变量在事务上下文之外工作。因此,临时将在日志文件中记录与使用表的更新相关的条目。