查询临时表和事务日志增长?

时间:2017-06-03 13:24:30

标签: sql-server

我正在开发一个简单查询的项目(简单选择)。为此,背后有很多逻辑,我在查询中创建了许多临时表(#)。

自上周以来,我们的数据库面临着一个问题,事务文件的大小很大而且只是在增长,DBA缩小了文件但是当我今天运行查询时,我无法再次运行查询。

我检查了交易日志的大小,即使没有做任何事情,它也会重新开始增长。我想知道是不是因为我的查询中有很多临时表(#)?或者我们的DBA应该保持这个?谢谢

1 个答案:

答案 0 :(得分:0)

临时表在TEMPDB上记录它的活动,因此日志增长仅在TEMPDB上进行..

您可以使用Adam Machanic中的sp_whoisactive来为tempdb

添加更多会话分配

这是我系统的查询输出

enter image description here

如果这是普通的数据库,如果你想知道什么会话可以导致更多的日志增长,你可以使用这个查询

select DB_NAME(tr.database_id) as dbname,
       (database_transaction_log_bytes_used+ database_transaction_log_bytes_reserved)*1.0/1024 as 'Tlog_used_KB',
       ec.session_id,
       txt.text

        from sys.dm_tran_database_transactions tr
        join
        sys.dm_exec_requests ec
        on ec.transaction_id=tr.transaction_id
        cross apply
        sys.dm_exec_sql_text(Ec.sql_handle) txt

通常情况下,TLOG Space会被重复使用,但是如果您没有看到发生这种情况,可能是由于listed here

的任何原因造成的。