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,這些檔案的大小可能略有不同。

檔案邏輯名稱物理名稱檔案增長
主數據 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。

相關詞條

熱門詞條

聯絡我們