tempdb 數(shù)據(jù)庫,tempdb 系統(tǒng)數(shù)據(jù)庫是一個全局資源,可供連接到 SQL Server 實例的所有用戶使用。
其他版本
tempdb 數(shù)據(jù)庫 SQL Server 2014 其他版本
SQL Server 2012
SQL Server 2008 R2
SQL Server 2008
SQL Server 2005
可用于保存下列各項:
顯示創(chuàng)建的臨時用戶對象,例如全局或局部臨時表、臨時存儲過程、表變量或游標(biāo)。
SQL Server 數(shù)據(jù)庫引擎創(chuàng)建的內(nèi)部對象,例如,用于存儲假脫機(jī)或排序的中間結(jié)果的工作表。
由使用已提交讀(使用行版本控制隔離或快照隔離事務(wù))的數(shù)據(jù)庫中數(shù)據(jù)修改事務(wù)生成的行版本。
由數(shù)據(jù)修改事務(wù)為實現(xiàn)聯(lián)機(jī)索引操作、多個活動的結(jié)果集 (MARS) 以及 AFTER 觸發(fā)器等功能而生成的行版本。
tempdb 中的操作是最小日志記錄操作。這將使事務(wù)產(chǎn)生回滾。每次啟動 SQL Server 時都會重新創(chuàng)建 tempdb,從而在系統(tǒng)啟動時總是保持一個干凈的數(shù)據(jù)庫副本。在斷開聯(lián)接時會自動刪除臨時表和存儲過程,并且在系統(tǒng)關(guān)閉后沒有活動連接。因此 tempdb 中不會有什么內(nèi)容從一個 SQL Server 會話保存到另一個會話。不允許對 tempdb 進(jìn)行備份和還原操作。
物理屬性
下表列出了 tempdb 數(shù)據(jù)和日志文件的初始配置值。對于不同版本的 SQL Server,這些文件的大小可能略有不同。
tempdb 的大小可以影響系統(tǒng)性能。例如,如果 tempdb 的大小太小,則每次啟動 SQL Server 時,系統(tǒng)處理可能忙于數(shù)據(jù)庫的自動增長,而不能支持工作負(fù)荷要求。可以通過增加 tempdb 的大小來避免此開銷。
性能提高
在 SQL Server 中, tempdb 性能以下列方式進(jìn)行提高:
可能緩存臨時表和表變量。緩存允許刪除和創(chuàng)建臨時對象的操作非常快速地執(zhí)行,并減少頁分配的爭用問題。
分配頁閂鎖協(xié)議得到改善。從而減少使用的 UP(更新)閂鎖數(shù)。
減少了 tempdb 的日志開銷。從而降低了 tempdb 日志文件上的磁盤 I/O 帶寬占用。
在 tempdb 中分配混合頁的算法得到改善。
移動文件
若要移動 tempdb 數(shù)據(jù)和日志文件,請參閱移動系統(tǒng)數(shù)據(jù)庫。
數(shù)據(jù)庫選項
下表列出了 tempdb 數(shù)據(jù)庫中每個數(shù)據(jù)庫選項的默認(rèn)值,以及是否可以修改該選項。若要查看這些選項的當(dāng)前設(shè)置,請使用 sys.databases 目錄視圖。
有關(guān)這些數(shù)據(jù)庫選項的說明,請參閱 ALTER DATABASE SET 選項 (Transact-SQL)。
限制
不能對 tempdb 數(shù)據(jù)庫執(zhí)行以下操作:
添加文件組。
備份或還原數(shù)據(jù)庫。
更改排序規(guī)則。默認(rèn)排序規(guī)則為服務(wù)器排序規(guī)則。
更改數(shù)據(jù)庫所有者。tempdb 由 dbo 擁有。
創(chuàng)建數(shù)據(jù)庫快照。
刪除數(shù)據(jù)庫。
從數(shù)據(jù)庫中刪除 guest 用戶。
啟用變更數(shù)據(jù)捕獲。
參與數(shù)據(jù)庫鏡像。
刪除主文件組、主數(shù)據(jù)文件或日志文件。
重命名數(shù)據(jù)庫或主文件組。
運行 DBCC CHECKALLOC。
運行 DBCC CHECKCATALOG。
將數(shù)據(jù)庫設(shè)置為 OFFLINE。
將數(shù)據(jù)庫或主文件組設(shè)置為 READ_ONLY。
權(quán)限
任何用戶都可以在 tempdb 中創(chuàng)建臨時對象。用戶只能訪問自己的對象,除非他們獲得更多的權(quán)限。可以撤消對 tempdb 的連接權(quán)限以阻止用戶使用 tempdb,但是不建議這樣做,因為一些例行操作需要使用 tempdb。
參考資料 >
tempdb 數(shù)據(jù)庫.MSDN.2014-05-27