0
假設我們有MS SQL Server數據庫和表A在其中。然後,我們執行這樣的:SQL服務器如何處理臨時表的更新(關於磁盤訪問)
select A.a1
into #temp1
from A
這link說:「如果內存可用,無論是表變量和臨時表的創建和處理,同時在內存(數據緩存)。」
假設我們在#temp1中有100行,這很容易適應內存...所以整個#temp1現在在內存中。但是,我們執行以下語句:
UPDATE #temp1 SET a1 = a1 + 1
這是否涉及一些IO操作?例如,是寫入temp_log(這是我認爲,不在RAM中)?或者,也許,因爲我們現在正在更新,整個#temp1被移動到hdd ...?
我覺得日誌保存的臨時表。如果沒有記錄日誌,臨時表日誌文件的目的是什麼? – 2013-03-13 19:34:16
我們都是(各種)正確的。記錄發生在tempdb中,但會減少:http://msdn.microsoft.com/en-ca/library/ms190768.aspx; – 2013-03-13 19:36:49
請注意,[表變量使用tempdb](http://cybersql.blogspot.com/2009/12/yes-table-variables-and-temp-tables.html) – iruvar 2013-03-13 19:55:46