Sql-Server
將數據載入到臨時表中時獲得最少的日誌記錄
在閱讀了 The Data Loading Performance Guide之後,我仍然不確定是否有必要將 TABLOCK 表提示添加到使用聚集索引定義的空臨時表中,以便獲得最少的日誌記錄。
顯然,臨時表是在 TempDB 中創建的,它以 SIMPLE 恢復模式執行,所以我認為它是最小日誌記錄的完美候選;但是,我找不到確認它的段落。
臨時表是否是最小日誌記錄的候選者,如果是,是否值得按照永久表的建議添加 TABLOCK 提示?
我不確定是否有必要將
TABLOCK
表提示添加到使用聚集索引定義的空臨時表中以獲得最少的日誌記錄。不可以。本地臨時表 (
#temp
) 對於創建會話是私有的,因此不需要表鎖定提示。全域臨時表##temp
(dbo.temp``tempdb
請注意,即使未應用完整的最小日誌記錄優化,創建的表也會
tempdb
受益於其他優化,例如不需要記錄REDO
資訊。您可以測試以查看是否正在使用未記錄的sys.fn_dblog
. 正常日誌記錄將包含行記錄的記錄,例如LOP_INSERT_ROWS
.請注意,需要添加
TABLOCK
到本地臨時表才能INSERT...SELECT
在 SQL Server 2016 中使用查詢並行執行,請參閱 Microsoft 知識庫文章: