tempdb 資料庫
tempdb系統資料庫是全域資源,可供連線到 SQL Server 實例的所有使用者使用,並用來保存下列專案:
明確建立的暫存使用者物件 (例如:全域或本機暫存資料表、暫存預存程序、資料表變數或資料指標)。
例如,SQL Server Database Engine 所建立的內建物件,可用來儲存多工緩衝處理或排序的中繼結果。
由資料庫中的資料修改交易所產生的資料列版本,該資料庫採用使用資料列版本設定隔離的讀取認可或快照集隔離交易。
由以下這類功能的資料修改交易所產生的資料列版本:線上索引作業、Multiple Active Result Set (MARS) 和 AFTER 觸發程序。
tempdb 中的作業會以最低限度記錄。 這可讓您回復交易。 tempdb會在每次啟動SQL Server時重新建立,讓系統一律以全新的資料庫複本開始。 連接中斷時會自動卸除暫存資料表與預存程序,且系統關閉時所有連接都會停止。 因此,tempdb中永遠不會儲存任何專案,從某個會話SQL Server儲存到另一個會話。 tempdb上不允許備份和還原作業。
tempdb 的實體屬性
下表列示 tempdb 資料和記錄檔的初始組態值。 對於不同版本的 SQL Server,這些檔案的大小稍有不同。
檔案 | 邏輯名稱 | 實體名稱 | 檔案成長 |
---|---|---|---|
主要資料 | tempdev | tempdb.mdf | 以百分之 10 的比例自動成長,直到磁碟全滿 |
Log | templog | templog.ldf | 以 10% 的比例自動成長,最大至 2 TB |
tempdb的大小可能會影響系統的效能。 例如,如果tempdb大小太小,系統處理可能會過度佔用自動成長資料庫,以支援每次啟動SQL Server的工作負載需求。 您可以藉由增加 tempdb的大小來避免此額外負荷。
tempdb 中的效能改進
在SQL Server中,tempdb效能會以下列方式改善:
可能會快取暫存資料表和資料表變數。 快取允許卸除和建立暫存物件以極快速度執行的作業,並減少頁面配置競爭。
已改進配置頁面閂鎖通訊協定。 這會減少所使用的 UP (更新) 閂鎖數目。
會減少 tempdb 的記錄負擔。 這會減少 tempdb 記錄檔的磁碟 I/O 頻寬耗用量。
已改善 在 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 | 開啟 | 是 |
AUTO_SHRINK | OFF | 否 |
AUTO_UPDATE_STATISTICS | 開啟 | 是 |
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 |
否 No 否 |
DATE_CORRELATION_OPTIMIZATION | OFF | 是 |
DB_CHAINING | 開啟 | 否 |
ENCRYPTION | OFF | 否 |
NUMERIC_ROUNDABORT | OFF | 是 |
PAGE_VERIFY | SQL SERVER的新安裝 CHECKSUM。 無 可升級SQL Server。 |
是 |
PARAMETERIZATION | 簡單 | 是 |
QUOTED_IDENTIFIER | OFF | 是 |
READ_COMMITTED_SNAPSHOT | OFF | 否 |
RECOVERY | 簡單 | 否 |
RECURSIVE_TRIGGERS | OFF | 是 |
Service Broker 選項 | ENABLE_BROKER | 是 |
TRUSTWORTHY | OFF | 否 |
如需這些資料庫選項的描述,請參閱 ALTER DATABASE SET 選項 (Transact-SQL)。
Restrictions
無法在 tempdb 資料庫上執行下列作業:
加入檔案群組。
備份或還原資料庫。
變更定序。 預設定序是伺服器定序。
變更資料庫擁有者。 tempdb 是由 sa所擁有。
建立資料庫快照集。
卸除資料庫。
從資料庫卸除 guest 使用者。
啟用異動資料擷取。
參與資料庫鏡像。
移除主要檔案群組、主要資料檔或記錄檔。
重新命名資料庫或主要檔案群組。
執行 DBCC CHECKALLOC。
執行 DBCC CHECKCATALOG。
將資料庫設定為 OFFLINE。
將資料庫或主要檔案群組設定為 READ_ONLY。
權限
任何使用者都可以在 tempdb 中建立暫時物件。 除非收到其他權限,否則使用者只能存取自己的物件。 您可以撤銷 tempdb 的連接權限來阻止使用者使用 tempdb,不過不建議您這樣做,因為有些常式作業需要使用 tempdb。
相關內容
sys.master_files (Transact-SQL)