分享方式:


tempdb 資料庫

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 資料庫上執行下列作業:

  • 加入檔案群組。

  • 備份或還原資料庫。

  • 變更排序規則。 預設定序是伺服器定序。

  • 變更資料庫擁有者。 tempdbsa 擁有。

  • 建立資料庫快照。

  • 卸除資料庫。

  • 從資料庫卸除 guest 使用者。

  • 啟用異動數據擷取。

  • 參與資料庫鏡像。

  • 移除主要檔案群組、主要資料檔案或記錄檔。

  • 重新命名資料庫或主要檔案群組。

  • 執行 DBCC CHECKALLOC。

  • 執行 DBCC CHECKCATALOG。

  • 將資料庫設定為 OFFLINE。

  • 將資料庫或主要檔案群組設定為 READ_ONLY。

權限

任何使用者都可以在tempdb中建立暫存物件。 除非使用者收到其他許可權,否則使用者只能存取自己的物件。 可以撤銷tempdb的連線許可權,以防止使用者使用tempdb,但不建議這樣做,因為某些例程作業需要使用tempdb。

SORT_IN_TEMPDB 選項用於索引

系統資料庫

sys.databases (Transact-SQL)

sys.master_files (Transact-SQL)

移動資料庫檔案

另請參閱

在 SQL Server 2005 中使用 tempdb