1.一個sqlserver資料庫實例上只能有一個tempdb資料庫,這個實例上所有的用戶都共用這個資料庫。2.tempdb資料庫在每次sqlserver重啟後都會重新創建,所以數據會丟失。3.因為tempdb資料庫上面的特性所以對tempdb資料庫的操作日誌不會保存重做信息,所以相比正常資料庫來說, ...
1.一個sqlserver資料庫實例上只能有一個tempdb資料庫,這個實例上所有的用戶都共用這個資料庫。
2.tempdb資料庫在每次sqlserver重啟後都會重新創建,所以數據會丟失。
3.因為tempdb資料庫上面的特性所以對tempdb資料庫的操作日誌不會保存重做信息,所以相比正常資料庫來說,tempdb擁有更好的性能。
4.tempdb存儲的用戶對象有全局臨時表,本地臨時表,表變數。
5.在創建他們的會話關閉時局部臨時表和全局臨時表都會被刪除。
6.表變數和局部臨時表的區別在於表變數沒有統計信息,表變數的作用範圍為批處理而不是會話,不能為表變數創建索引,表變數不支持架構修改。註意他們都是存儲在磁碟的數據,但可能有緩存。
7.由於表變數沒有統計信息,所以表變數的操作數據速度要比臨時表快,但也真因為此,表變數數據多時,查詢優化器無法創建合適的查詢計劃會造成查詢速度很慢。
8.無論是實用臨時表還是表變數都要經過全面的性能測試,但最好傾向於使用臨時表,問題少。
9.tempdb也是閂鎖爭用的易發地,解決辦法有兩個,一是創建多個tenpdb數據文件進行分壓。二是創建易於重用的的臨時對象,避免重覆創建,重用的臨時對象有幾個特點
:沒有創建命名約束,沒創建索引的對錶造成影響的語句,不是通過動態sql創建的,不由另一個對象創建如存儲過程,觸發器,用戶定義函數,用戶定義的標值函數返回的表。
有好多動態管理視圖可以查看一些臨時表相關信息。