tempdb 系統資料庫是全域資源,可供連線到 SQL Server 實例的所有使用者使用,並用來保存下列專案:
明確建立的暫存用戶物件,例如:全域或本機臨時表、臨時預存程式、數據表變數或數據指標。
SQL Server Database Engine 建立的內部對象,例如工作表,用來儲存緩衝處理或排序的中繼結果。
在一個使用行版本隔離或快照隔離的資料庫中,藉由數據修改交易所生成的行版本,實現讀取已提交的隔離。
數據修改交易針對功能所產生的數據列版本,例如:在線索引作業、多個作用中結果集 (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 (update) 闩鎖數目。
tempdb 的記錄額外負荷會降低。 這樣可減少 tempdb 記錄檔上的磁碟 I/O 頻寬耗用量。
在tempdb中,混合頁面的配置演算法已改善。
移動tempdb資料和記錄檔
若要移動 tempdb 資料和記錄檔,請參閱 行動系統資料庫。
資料庫選項
下表列出 tempdb 資料庫中每個資料庫選項的預設值,以及是否可以修改該選項。 若要檢視這些選項目前的設定,請參閱 sys.databases 目錄檢視。
資料庫選項 | 預設值 | 可以修改 |
---|---|---|
ALLOW_SNAPSHOT_ISOLATION (允許快照隔離) | 關閉 | 是的 |
ANSI_NULL_DEFAULT(預設空值設置) | 關閉 | 是的 |
ANSI_NULLS | 關閉 | 是的 |
ANSI_PADDING(ANSI 填充設定屬性) | 關閉 | 是的 |
ANSI_WARNINGS | 關閉 | 是的 |
ARITHABORT | 關閉 | 是的 |
自動關閉 | 關閉 | 否 |
AUTO_CREATE_STATISTICS | 開啟 | 是的 |
自動縮小 | 關閉 | 否 |
自動更新統計資訊 | 開啟 | 是的 |
AUTO_UPDATE_STATISTICS_ASYNC | 關閉 | 是的 |
變更追蹤 | 關閉 | 否 |
CONCAT_NULL_YIELDS_NULL(串接空值產生空值) | 關閉 | 是的 |
游標在提交時關閉 | 關閉 | 是的 |
CURSOR_DEFAULT(游標_預設) | 全球 | 是的 |
資料庫可用性選項 | 在線 多用戶 讀寫 |
否 否 否 |
日期關聯最佳化 | 關閉 | 是的 |
DB_CHAINING(資料庫連鎖) | 開啟 | 否 |
加密 | 關閉 | 否 |
NUMERIC_ROUNDABORT(數字捨入中止) | 關閉 | 是的 |
頁面驗證 | SQL Server 的新安裝總和檢查碼。 沒有 SQL Server 的升級。 |
是的 |
參數化 | 簡單 | 是的 |
QUOTED_IDENTIFIER(引號識別符) | 關閉 | 是的 |
READ_COMMITTED_SNAPSHOT | 關閉 | 否 |
恢復 | 簡單 | 否 |
遞迴觸發器 | 關閉 | 是的 |
Service Broker 選項 | ENABLE_BROKER | 是的 |
可信賴 | 關閉 | 否 |
如需這些資料庫選項的描述,請參閱 ALTER DATABASE SET 選項 (Transact-SQL)。
限制
無法在 tempdb 資料庫上執行下列作業:
加入檔案群組。
備份或還原資料庫。
變更排序規則。 預設定序是伺服器定序。
變更資料庫擁有者。 tempdb 由 sa 擁有。
建立資料庫快照。
卸除資料庫。
從資料庫卸除 guest 使用者。
啟用異動數據擷取。
參與資料庫鏡像。
移除主要檔案群組、主要資料檔案或記錄檔。
重新命名資料庫或主要檔案群組。
執行 DBCC CHECKALLOC。
執行 DBCC CHECKCATALOG。
將資料庫設定為 OFFLINE。
將資料庫或主要檔案群組設定為 READ_ONLY。
權限
任何使用者都可以在tempdb中建立暫存物件。 除非使用者收到其他許可權,否則使用者只能存取自己的物件。 可以撤銷tempdb的連線許可權,以防止使用者使用tempdb,但不建議這樣做,因為某些例程作業需要使用tempdb。
相關內容
sys.master_files (Transact-SQL)