tempdb

tempdb

tempdb 資料庫,tempdb 系統資料庫是一個全局資源,可供連接到 SQL Server 實例的所有用戶使用。

其他版本


tempdb
tempdb
tempdb 資料庫 SQL Server 2014 其他版本
SQL Server 2012
SQL Server 2008 R2
SQL Server 2008
SQL Server 2005
可用於保存下列各項:
顯示創建的臨時用戶對象,例如全局或局部臨時表、臨時存儲過程、表變數或游標。
SQL Server 資料庫引擎創建的內部對象,例如,用於存儲假離線或排序的中間結果的工作表。
由使用已提交讀(使用行版本控制隔離或快照隔離事務)的資料庫中數據修改事務生成的行版本。
由數據修改事務為實現聯機索引操作、多個活動的結果集 (MARS) 以及 AFTER 觸發器等功能而生成的行版本。
tempdb 中的操作是最小日誌記錄操作。這將使事務產生回滾。每次啟動 SQL Server 時都會重新創建 tempdb,從而在系統啟動時總是保持一個乾淨的資料庫副本。在斷開聯接時會自動刪除臨時表和存儲過程,並且在系統關閉后沒有活動連接。因此 tempdb 中不會有什麼內容從一個 SQL Server 會話保存到另一個會話。不允許對 tempdb 進行備份和還原操作。

物理屬性


下表列出了 tempdb 數據和日誌文件的初始配置值。對於不同版本的 SQL Server,這些文件的大小可能略有不同。
文件邏輯名稱物理名稱文件增長
主數據tempdevtempdb.mdf按 10% 自動增長,直到磁碟已滿
日誌templogtemplog.ldf以 10% 的速度自動增長到最大 2 TB
tempdb 的大小可以影響系統性能。例如,如果 tempdb 的大小太小,則每次啟動 SQL Server 時,系統處理可能忙於資料庫的自動增長,而不能支持工作負荷要求。可以通過增加 tempdb 的大小來避免此開銷。

性能提高


在 SQL Server 中, tempdb 性能以下列方式進行提高:
可能緩存臨時表和表變數。緩存允許刪除和創建臨時對象的操作非常快速地執行,並減少頁分配的爭用問題。
分配頁閂鎖協議得到改善。從而減少使用的 UP(更新)閂鎖數。
減少了 tempdb 的日誌開銷。從而降低了 tempdb 日誌文件上的磁碟 I/O 帶寬佔用。
在 tempdb 中分配混合頁的演演算法得到改善。

移動文件

若要移動 tempdb 數據和日誌文件,請參閱移動系統資料庫。

資料庫選項

下表列出了 tempdb 資料庫中每個資料庫選項的默認值,以及是否可以修改該選項。若要查看這些選項的當前設置,請使用 sys.databases 目錄視圖。
資料庫選項默認值是否可修改
ALLOW_SNAPSHOT_ISOLATIONOFF
ANSI_NULL_DEFAULTOFF
ANSI_NULLSOFF
ANSI_PADDINGOFF
ANSI_WARNINGSOFF
ARITHABORTOFF
AUTO_CLOSEOFF
AUTO_CREATE_STATISTICSON
AUTO_SHRINKOFF
AUTO_UPDATE_STATISTICSON
AUTO_UPDATE_STATISTICS_ASYNCOFF
CHANGE_TRACKINGOFF
CONCAT_NULL_YIELDS_NULLOFF
CURSOR_CLOSE_ON_COMMITOFF
CURSOR_DEFAULTGLOBAL
資料庫可用性選項
ONLINE
MULTI_USER
READ_WRITE
DATE_CORRELATION_OPTIMIZATIONOFF
DB_CHAININGON
ENCRYPTIONOFF
NUMERIC_ROUNDABORTOFF
PAGE_VERIFY
對於新安裝的 SQL Server,為 CHECKSUM
對於升級的 SQL Server,為 NONE
PARAMETERIZATIONSIMPLE
QUOTED_IDENTIFIEROFF
READ_COMMITTED_SNAPSHOTOFF
RECOVERYSIMPLE
RECURSIVE_TRIGGERSOFF
Service Broker 選項ENABLE_BROKER
TRUSTWORTHYOFF
有關這些資料庫選項的說明,請參閱 ALTER DATABASE SET 選項 (Transact-SQL)。

限制


不能對 tempdb 資料庫執行以下操作:
添加文件組。
備份或還原資料庫。
更改排序規則。默認排序規則為伺服器排序規則。
更改資料庫所有者。tempdb 由 dbo 擁有。
創建資料庫快照。
刪除資料庫。
從資料庫中刪除 guest 用戶。
啟用變更數據捕獲。
參與資料庫鏡像。
刪除主文件組、主數據文件或日誌文件。
重命名資料庫或主文件組。
運行 DBCC CHECKALLOC。
運行 DBCC CHECKCATALOG。
將資料庫設置為 OFFLINE。
將資料庫或主文件組設置為 READ_ONLY。

許可權


任何用戶都可以在 tempdb 中創建臨時對象。用戶只能訪問自己的對象,除非他們獲得更多的許可權。可以撤消對 tempdb 的連接許可權以阻止用戶使用 tempdb,但是不建議這樣做,因為一些例行操作需要使用 tempdb。