tempdb 是 SQL Server 核心系統資料庫,所有使用者共享,承載臨時物件、內部運算、版本存放區。本文解析其特性、三大物件類型、優化四大策略 (最小化使用、預先配置空間、避免收縮、I/O 隔離),並提供監控腳本。
| 特性 | 說明 |
|---|---|
| 非持久化 | 服務重啟時重建,無需恢復 |
| Simple 復原模式 | 不可變更,檢查點後日誌標記重用 |
| 單一檔案群組 | 不可新增檔案群組 |
| 共享實例級 | 所有資料庫/使用者共享同一 tempdb |
#t, ##t)、資料表變數、游標。識別並減少以下高頻 tempdb 消費者:
DBCC CHECKDB → 排程在低峰期執行。SORT_IN_TEMPDB (索引建立選項) → 權衡效能與空間。ALTER DATABASE tempdb MODIFY FILE (NAME='tempdev', SIZE=300MB)DBCC SHRINKFILE 會造成碎片、鎖定、效能下降。ALTER DATABASE tempdb ADD FILE (NAME='tempdev2', FILENAME='T:\tempdb2.ndf', SIZE=500MB);
-- 重複至核心數
SELECT
a.name,
SUM(size) * 8.0 / 1024 / 1024 AS [GB],
SUM(size) * 8.0 / 1024 AS [MB]
FROM master.dbo.sysdatabases a
INNER JOIN master.dbo.sysaltfiles b ON a.dbid = b.dbid
WHERE a.name = 'tempdb'
GROUP BY a.name
ORDER BY 1;
tempdb 是 SQL Server 的「高速草稿紙」,優化核心在於:減少不必要的寫入、預先配置避免成長抖動、物理隔離 I/O 爭用、多資料檔消除配置頁熱點。將 tempdb 納入每日巡檢與容量規劃,是穩定生產環境的必要條件。