-
tempdb
鎖定
tempdb 數據庫,tempdb 系統數據庫是一個全局資源,可供連接到 SQL Server 實例的所有用户使用。
- 中文名
- tempdb
- 類 型
- 數據庫
- 用 途
- 顯示創建的臨時用户對象
- 用 户
- SQL Server 實例的所有用户
tempdb其他版本
- SQL Server 2012
- SQL Server 2008 R2
- SQL Server 2005
可用於保存下列各項:
- 顯示創建的臨時用户對象,例如全局或局部臨時表、臨時存儲過程、表變量或遊標。
- SQL Server 數據庫引擎創建的內部對象,例如,用於存儲假脱機或排序的中間結果的工作表。
- 由使用已提交讀(使用行版本控制隔離或快照隔離事務)的數據庫中數據修改事務生成的行版本。
- 由數據修改事務為實現聯機索引操作、多個活動的結果集 (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(更新)閂鎖數。
- 減少了 tempdb 的日誌開銷。從而降低了 tempdb 日誌文件上的磁盤 I/O 帶寬佔用。
- 在 tempdb 中分配混合頁的算法得到改善。
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 | 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 數據庫執行以下操作:
- 添加文件組。
- 備份或還原數據庫。
- 更改排序規則。默認排序規則為服務器排序規則。
- 更改數據庫所有者。tempdb 由 dbo 擁有。
- 創建數據庫快照。
- 刪除數據庫。
- 從數據庫中刪除 guest 用户。
- 啓用變更數據捕獲。
- 參與數據庫鏡像。
- 刪除主文件組、主數據文件或日誌文件。
- 重命名數據庫或主文件組。
- 運行 DBCC CHECKALLOC。
- 運行 DBCC CHECKCATALOG。
- 將數據庫設置為 OFFLINE。
- 將數據庫或主文件組設置為 READ_ONLY。
tempdb權限
任何用户都可以在 tempdb 中創建臨時對象。用户只能訪問自己的對象,除非他們獲得更多的權限。可以撤消對 tempdb 的連接權限以阻止用户使用 tempdb,但是不建議這樣做,因為一些例行操作需要使用 tempdb。
- 參考資料
-
- 1. tempdb 數據庫 .MSDN[引用日期2014-05-27]