設定 Azure SQL 受控執行個體的 tempdb 設定

適用於:Azure SQL 受控執行個體

本文會教導您針對 Azure SQL 受控執行個體 編輯 tempdb 設定。

Azure SQL 受控執行個體可讓您設定下列內容:

  • tempdb 檔案數目
  • tempdb 檔案的成長增量
  • tempdb 大小上限

在您的執行個體重新啟動、更新或發生容錯移轉之後,tempdb 設定會繼續保存。

概觀

tempdb 是 Azure SQL 受控執行個體 隨附的預設系統資料庫之一。 tempdb 的結構與任何其他使用者資料庫結構相同;差異在於,由於 tempdb 用於非持久儲存體,因此會以最低限度記錄異動。

tempdb 無法卸除、中斷連結、離線、重新命名或還原。 嘗試其中任何一項作業會傳回錯誤。 當伺服器執行個體每次啟動時都會重新產生 tempdb,且於上個工作階段期間可能在 tempdb 建立的任何物件,在服務重新啟動、執行個體更新管理作業或容錯移轉之後不會保存。

tempdb 的工作負載與其他使用者資料庫的工作負載不同;物件與資料經常建立及損毀,且並行度極高。 每個受控執行個體只有一個 tempdb。 即使您有多個資料庫與應用程式連線執行個體,其仍使用相同 tempdb 資料庫。 當服務嘗試在大量使用的 tempdb 配置頁面時,可能會發生爭用。 視爭用程度而定,涉及 tempdb 的查詢與要求可能無法取得回應。 這就是為什麼 tempdb 對服務效能至關重要的原因。

tempdb 檔案數目

增加 tempdb 資料檔案數目會為每個資料檔建立一或多個 GAM 與 SGAM 頁面,這有助改善 tempdb 並行度並減少 PFC 頁面爭用。 然而,增加 tempdb 資料檔案數目可能帶來其他效能影響,因此請先徹底測試,再於生產環境實作。

根據預設,Azure SQL 受控執行個體會建立 12 個 tempdb 資料檔案與 1 個 tempdb 記錄檔,但可修改此組態。

變更 tempdb 檔案數目具下列限制:

  • 新檔案的邏輯名稱不區分大小寫,最多 16 個字元且無空格。
  • tempdb 檔案數目上限為 128。

注意

在新增新檔案之後,您無需重新啟動伺服器;然而,空置檔案會填入較高優先順序,而且配置頁面的循環配置資源演算法會遺失,直到系統重新平衡為止。

您可使用 SQL Server Management Studio (SSMS) 與 Transact-SQL (T-SQL) 來變更 Azure SQL 受控執行個體的 tempdb 檔案數目。

您可以使用 SQL Server Management Studio (SSMS) 來修改 tempdb 檔案數目。 若要如此做,請執行下列步驟:

  1. 連線到 SSMS 的受控執行個體。

  2. 在 [物件總管],展開 [資料庫],然後展開 [系統資料庫]

  3. 以滑鼠右鍵按一下 tempdb,選擇 [屬性]

  4. 在 [選取頁面] 下方選取 [檔案],檢視現有的 tempdb 檔案數目。

  5. 若要新增檔案,請選擇 [新增],然後在資料列提供新資料檔案的相關資訊。

    Screenshot of Database Properties in SSMS, with new database file name highlighted.

  6. 若要移除 tempdb 檔案,從資料庫檔案清單選擇您要移除的檔案,然後選取 [移除]

成長增量

tempdb 檔案成長可能會對使用 tempdb 的查詢造成效能影響。 因此,若 tempdb 資料檔案成長增量太小可能導致範圍破斷,而增量太大則可能導致成長緩慢,或者如果成長空間不足,則可能導致成長失敗。 tempdb 檔案成長增量的最佳值取決於您的工作負載。

對於 tempdb 資料檔案,SQL 受控執行個體的預設成長增量是 254 MB 的,而 tempdb 記錄檔則為 64 MB,但您可設定成長增量以便適應您的工作負載並調整效能。

請考慮下列事項:

  • 檔案成長參數支援下列 int_growth_increment 單位 :KB、MB、GB、TB 與 %。
  • 所有 tempdb 資料檔案的成長增量應相同,否則分配頁面的循環配置資源演算法可能會受影響。

您使用 SQL Server Management Studio (SSMS) 與 Transact-SQL (T-SQL) 來變更 tempdb 檔案的成長增量。

您可使用 SQL Server Management Studio (SSMS) 來修改 tempdb 檔案的成長增量。 若要如此做,請執行下列步驟:

  1. 連線到 SSMS 的受控執行個體。

  2. 在 [物件總管],展開 [資料庫],然後展開 [系統資料庫]

  3. 以滑鼠右鍵按一下 tempdb,選擇 [屬性]

  4. 在 [選取頁面] 下方選取 [檔案],檢視現有的 tempdb 檔案數目。

  5. 選擇資料檔案旁的省略號 (…),開啟 [變更自動成長屬性] 對話方塊視窗。

  6. 核取 [啟用自動成長] 旁的方塊,然後藉由指定檔案成長值 (以百分比或 MB 為單位) 來修改您的自動成長設定。

    Screenshot of Change Autogrowth for tempdev in SSMS, with new database file name highlighted.

  7. 選取 [確定],儲存您的設定。

大小上限

tempdb大小是所有 tempdb 檔案的總和大小。 tempdb 檔案大小是該 tempdb 檔案的已分配 (歸零) 空間。 所有 tempdb 檔案的初始檔案大小為 16 MB,這是執行個體重新啟動或容錯移轉時所有 tempdb 檔案的大小。 一旦 tempdb 資料檔案的已使用空間達到檔案大小,所有 tempdb 資料檔案就會依其設定的成長增量自動成長。

tempdb已使用空間指的是所有 tempdb 檔案的已使用空間總和。 tempdb 檔案的已使用空間等於該 tempdb 檔案為非零資訊佔用的部分大小。 tempdb已使用空間tempdb可用空間的總和等於 tempdb 大小。

您可使用 T-SQL 來針對 tempdb 檔案判斷其目前已使用與可用空間。

若要取得 tempdb 資料檔案的已使用空間、可用空間與大小,請執行此命令:

USE tempdb
SELECT SUM((allocated_extent_page_count)*1.0/128) AS TempDB_used_data_space_inMB, 
	SUM((unallocated_extent_page_count)*1.0/128) AS TempDB_free_data_space_inMB, 
	SUM(total_page_count*1.0/128) AS TempDB_data_size_inMB 
FROM sys.dm_db_file_space_usage

下列螢幕擷取畫面顯示範例輸出:

Screenshot of the query result in SSMS showing used and free space in the tempdb data file.

若要取得 tempdb 記錄檔的已使用空間、可用空間與大小,請執行此命令:

USE tempdb
SELECT used_log_space_in_bytes*1.0/1024/1024 AS TempDB_used_log_space_inMB,
     (total_log_size_in_bytes- used_log_space_in_bytes)*1.0/1024/1024 AS TempDB_free_log_space_inMB,
     total_log_size_in_bytes*1.0/1024/1024 AS TempDB_log_size_inMB
FROM sys.dm_db_log_space_usage

下列螢幕擷取畫面顯示範例輸出:

Screenshot of the query result in SSMS showing used and free space in the tempdb log file.

tempdb 大小上限是 tempdb 無法進一步成長的限制。

SQL 受控執行個體的 tempdb 大小上限具下列限制:

  • 在一般用途服務層級,tempdb 的大小上限限制為 24 Gb/虛擬核心 (96-1920 GB),記錄檔則為120 GB。
  • 在業務關鍵服務層級,tempdb 與其他資料庫競爭資源,因此保留儲存體會由 tempdb 與其他資料庫共用。 tempdb 記錄檔的大小上限是 2 TB。

tempdb 檔案會成長,直到達到服務層級所允許的最大限制,或由手動設定的 tempdb 檔案大小上限為止。

您可使用 SQL Server Management Studio (SSMS) 與 Transact-SQL (T-SQL) 來變更 tempdb 檔案的大小上限。

若要判斷 SSMS 目前 tempdb 的大小上限,請遵循下列步驟:

  1. 連線到 SSMS 的受控執行個體。
  2. 在 [物件總管],展開 [資料庫],然後展開 [系統資料庫]
  3. 以滑鼠右鍵按一下 tempdb,選擇 [屬性]
  4. 在 [一般頁面],檢查 [資料庫] 下方的 [大小] 值,判斷您的 tempdb 大小上限。 -1 值表示 tempdb 無大小上限。

Screenshot of tempdb database properties showing the max size for tempdb in SSMS.

若要變更 SSMS 目前 tempdb 的大小上限,請遵循下列步驟:

  1. 連線到 SSMS 的受控執行個體。
  2. 在 [物件總管],展開 [資料庫],然後展開 [系統資料庫]
  3. 以滑鼠右鍵按一下 tempdb,選擇 [屬性]
  4. 在 [選取頁面] 下方選取 [檔案],檢視現有的 tempdb 檔案數目。
  5. 選擇資料檔案旁的省略號 (…),開啟 [變更自動成長屬性] 對話方塊視窗。
  6. 變更 [檔案大小上限] 底下的值,即可修改 tempdb 大小上限設定。
  7. 選取 [確定],儲存您的設定。

Screenshot of the change autogrowth dialog box in SSMS, with maximum file size highlighted.

tempdb 限制

下表定義各種 tempdb 組態設定限制:

組態設定
tempdb 檔案邏輯名稱 最多 16 個字元
tempdb 檔案數目 最多 128 個檔案
tempdb 檔案預設數目 13 (1 個記錄檔 + 12 個資料檔案)
tempdb 資料檔案的初始大小 16 MB
tempdb 資料檔案的預設成長增量 256 MB
tempdb 記錄檔的初始大小 16 MB
tempdb 記錄檔的預設成長增量 64 MB
tempdb 初始大小上限 -1 (無限制)
tempdb 最大大小 最多到儲存體大小

下一步