2017-06-03 79 views
-1

我正在一個項目上進行簡單的查詢(簡單選擇)。爲此,背後有許多邏輯,我在查詢(#)中創建了許多臨時表。查詢臨時表和事務日誌不斷增長?

我們的數據庫自上週以來面臨一個問題,事務文件的大小很大,只是增長,DBA縮小了文件,但是當我今天運行查詢時,我無法再次運行查詢。

我檢查了事務日誌的大小,即使沒有做任何事情,它也開始再次增長。我想知道是否因爲我的查詢中有很多臨時表(#)?或者我們的DBA應該保持這一點?謝謝

+0

也許你應該研究如何使您的查詢更有效與專注於如何維護tlogs。否則,問題將會持續。 – scsimon

+0

那麼你認爲創建大量的臨時表會影響事務日誌的大小嗎?你有任何想法如何使查詢更有效> –

+0

我們將不得不看到查詢.... – scsimon

回答

0

臨時表記錄它在tempdb上活動,所以日誌的增長將只有在tempdb上..

可以使用sp_whoisactive從亞當Machanic到多個會話分配爲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空間將被重用,但如果你不seeeing發生這種情況,可能是由於任何原因,可能是listed here

+0

非常感謝您的回答。事實上,臨時數據庫事務日誌不會增長,我不用於查詢的其他數據庫也在增長。你知道什麼會導致其他數據庫增長,即使我們沒有從數據庫中查詢任何東西嗎? –

+0

非常感謝你。實際上,它不是增長臨時數據庫的事務日誌,而是正常數據庫的事務日誌,我不明白這是因爲我沒有在數據庫中進行更改,我只是在查詢中創建臨時#表以獲取某個字段。你有什麼想法爲什麼正常分貝的事務日誌仍然在增長,即使現在我停止了我的查詢。 –