tempdb
tempdb
tempdb 資料庫,tempdb 系統資料庫是一個全局資源,可供連接到 SQL Server 實例的所有用戶使用。
tempdb
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,這些文件的大小可能略有不同。
文件 | 邏輯名稱 | 物理名稱 | 文件增長 |
主數據 | tempdev | tempdb.mdf | 按 10% 自動增長,直到磁碟已滿 |
日誌 | templog | templog.ldf | 以 10% 的速度自動增長到最大 2 TB |
tempdb 的大小可以影響系統性能。例如,如果 tempdb 的大小太小,則每次啟動 SQL Server 時,系統處理可能忙於資料庫的自動增長,而不能支持工作負荷要求。可以通過增加 tempdb 的大小來避免此開銷。
在 SQL Server 中, tempdb 性能以下列方式進行提高:
可能緩存臨時表和表變數。緩存允許刪除和創建臨時對象的操作非常快速地執行,並減少頁分配的爭用問題。
分配頁閂鎖協議得到改善。從而減少使用的 UP(更新)閂鎖數。
減少了 tempdb 的日誌開銷。從而降低了 tempdb 日誌文件上的磁碟 I/O 帶寬佔用。
在 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 由 dbo 擁有。
創建資料庫快照。
刪除資料庫。
從資料庫中刪除 guest 用戶。
啟用變更數據捕獲。
參與資料庫鏡像。
刪除主文件組、主數據文件或日誌文件。
重命名資料庫或主文件組。
運行 DBCC CHECKALLOC。
運行 DBCC CHECKCATALOG。
將資料庫設置為 OFFLINE。
將資料庫或主文件組設置為 READ_ONLY。
任何用戶都可以在 tempdb 中創建臨時對象。用戶只能訪問自己的對象,除非他們獲得更多的許可權。可以撤消對 tempdb 的連接許可權以阻止用戶使用 tempdb,但是不建議這樣做,因為一些例行操作需要使用 tempdb。