複製鏈接
請複製以下鏈接發送給好友

tempdb

鎖定
tempdb 數據庫,tempdb 系統數據庫是一個全局資源,可供連接到 SQL Server 實例的所有用户使用。
中文名
tempdb
類    型
數據庫
用    途
顯示創建的臨時用户對象
用    户
SQL Server 實例的所有用户

tempdb其他版本

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

tempdb物理屬性

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

tempdb性能提高

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

tempdb移動文件

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

tempdb數據庫選項

下表列出了 tempdb 數據庫中每個數據庫選項的默認值,以及是否可以修改該選項。若要查看這些選項的當前設置,請使用 sys.databases 目錄視圖。
數據庫選項
默認值
是否可修改
ALLOW_SNAPSHOT_ISOLATION
OFF
ANSI_NULL_DEFAULT
OFF
ANSI_NULLS
OFF
ANSI_PADDING
OFF
ANSI_WARNINGS
OFF
ARITHABORT
OFF
AUTO_CLOSE
OFF
AUTO_CREATE_STATISTICS
ON
AUTO_SHRINK
OFF
AUTO_UPDATE_STATISTICS
ON
AUTO_UPDATE_STATISTICS_ASYNC
OFF
CHANGE_TRACKING
OFF
CONCAT_NULL_YIELDS_NULL
OFF
CURSOR_CLOSE_ON_COMMIT
OFF
CURSOR_DEFAULT
GLOBAL
數據庫可用性選項
ONLINE
MULTI_USER
READ_WRITE
DATE_CORRELATION_OPTIMIZATION
OFF
DB_CHAINING
ON
ENCRYPTION
OFF
NUMERIC_ROUNDABORT
OFF
PAGE_VERIFY
對於新安裝的 SQL Server,為 CHECKSUM。
對於升級的 SQL Server,為 NONE。
PARAMETERIZATION
SIMPLE
QUOTED_IDENTIFIER
OFF
READ_COMMITTED_SNAPSHOT
OFF
RECOVERY
SIMPLE
RECURSIVE_TRIGGERS
OFF
Service Broker 選項
ENABLE_BROKER
TRUSTWORTHY
OFF
有關這些數據庫選項的説明,請參閲 ALTER DATABASE SET 選項 (Transact-SQL)。

tempdb限制

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

tempdb權限

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