Synapse SQL 資源耗用量

本文說明 Synapse SQL 的資源耗用量模型。

無伺服器 SQL 集區

無伺服器 SQL 集區是按照每個查詢來收費的服務,因此您不必挑選合適的大小。 系統會根據您的需求自動調整,讓您不必管理基礎結構和挑選適當的大小供解決方案使用。

專用 SQL 集區 - 資料倉儲單位 (DWU) 和計算資料倉儲單位 (cDWU)

選擇理想的資料倉儲單位 (DWU) 數目以獲得最佳價格與效能,以及如何變更單位數目的建議。

資料倉儲單位

Synapse SQL 集區代表所要佈建的分析資源集合。 分析資源會定義為 CPU、記憶體和 IO 的組合。 這三個資源會組合成計算規模的單位,我們稱之為「資料倉儲單位 (DWU)」。 DWU 能以抽象而標準化的量值來呈現計算資源與效能。 若變更您的服務等級,則會改變系統可用的 DWU 數目。 接著,這項變更會調整系統的效能和成本。

若要提升效能,則可以增加資料倉儲單位數。 若要降低效能,則請降低資料倉儲單位。 儲存體和計算成本會分別計費,因此,變更資料倉儲單位不會影響儲存體成本。

資料倉儲單位的效能是以這些資料倉儲工作負載計量為根據:

  • 標準資料倉儲查詢能以多快的速度掃描大量資料列,然後執行複雜的彙總。 這個作業是 I/O 和 CPU 密集型作業。
  • 資料倉儲能以多快的速度從 Azure 儲存體 Blob 或 Azure Data Lake 擷取資料。 這個作業是網路和 CPU 密集型作業。
  • CREATE TABLE AS SELECT T-SQL 命令能以多快的速度複製資料表。 這個作業牽涉到從儲存體讀取資料、跨應用裝置的節點散發資料,以及重新寫入至儲存體。 這個作業是 CPU、IO 和網路密集型作業。

增加 DWU:

  • 以線性方式變更掃描、彙總和 CTAS 陳述式的系統效能
  • 針對 PolyBase 載入作業增加讀取器和寫入器的數目
  • 增加並行查詢和並行位置的數目上限。

服務等級目標

服務等級目標 (SLO) 是決定您資料倉儲之成本和效能層級的延展性設定。 Gen2 的服務等級會以計算資料倉儲單位 (cDWU) 來測量,例如 DW2000c。 Gen1 服務等級則會以 DWU 來測量,例如 DW2000。

服務等級目標 (SLO) 是決定您資料倉儲之成本和效能層級的延展性設定。 Gen2 專用 SQL 集區的服務等級會以資料倉儲單位 (DWU) 來測量,例如 DW2000c。

注意

Azure Synapse Analytics Gen2 最近新增了其他調整規模功能,以支援最低 100 計算資料倉儲單位的計算層。 目前在 Gen1 上需要較低計算層的現有資料倉儲,現在可以升級到目前可用的區域中的 Gen2,不需要額外成本。 如果尚不支援您的區域,您仍然可以升級到支援的地區。 如需詳細資訊,請參閱升級至 Gen2

在 T-SQL 中,SERVICE_OBJECTIVE 設定會決定您專用 SQL 集區適用的服務等級和效能層級。

CREATE DATABASE mySQLDW
(Edition = 'Datawarehouse'
 ,SERVICE_OBJECTIVE = 'DW1000c'
)
;

效能層級和資料倉儲單位

每一個效能層級都會使用與其資料倉儲單位稍有不同的測量單位。 這項差異會在縮放單位直接轉換為帳單時反映於發票上。

  • Gen1 資料倉儲會以資料倉儲單位 (DWU) 來測量。
  • Gen2 資料倉儲則會以計算的資料倉儲單位 (cDWU) 來測量。

DWU 和 cDWU 均支援將計算相應增加或減少,並且在您不需使用資料倉儲時暫停計算。 這些作業全都依需求指定。 Gen2 會使用計算節點上的本機磁碟型快取來改善效能。 當您調整或暫停系統時,快取就會失效,因此,需要一段快取準備時間,才能達到最佳效能。

當您增加資料倉儲單位時,正是以線性方式增加運算資源。 Gen2 可提供最佳查詢效能和最高規模。 Gen2 系統也會充分利用快取。

容量限制

每部 SQL 伺服器 (例如 myserver.database.windows.net) 都有資料庫交易單位 (DTU) 配額,允許有特定數目的資料倉儲單位。 如需詳細資訊,請參閱工作負載管理容量限制

評估您所需的資料倉儲單位數目

理想的資料倉儲單位數大部分取決於您的工作負載,以及您已載入系統的資料量。

為工作負載尋找最佳 DWU 的步驟:

  1. 首先選取較小的 DWU。
  2. 當您的測試資料載入系統時監視應用程式效能,觀察比較所選 DWU 數目與您觀察到的效能。
  3. 針對定期的尖峰活動期間,識別任何其他需求。 在活動中顯示明顯尖峰和低谷的工作負載可能需要經常擴縮。

SQL 集區是一個擴增系統,可以佈建大量的計算以及查詢相當大量的資料。 若要查看真正用以調整的功能 (尤其是在較大的 DWU 上),建議您在進行調整以確定有足夠資料可提供給 CPU 時調整資料集。 針對調整測試,我們建議至少使用 1 TB。

注意

如果工作可以在計算節點之間分割,則查詢效能只會隨更多的平行處理增加。 如果您發現調整並未變更效能,則可能需要調整資料表設計和/或您的查詢。 如需查詢微調指引,請參閱管理使用者查詢

權限

變更資料倉儲單位需要 ALTER DATABASE 中所述的權限。

Azure 內建角色 (例如 SQL DB Contributor 和 SQL Server Contributor) 可以變更 DWU 設定。

檢視目前的 DWU 設定

檢視目前的 DWU 設定:

  1. 在 Visual Studio 中開啟 [SQL Server 物件總管]。
  2. 連接到與邏輯 SQL 伺服器相關聯的 master 資料庫。
  3. 從 sys.database_service_objectives 動態管理檢視中選取。 範例如下:
SELECT  db.name [Database]
,        ds.edition [Edition]
,        ds.service_objective [Service Objective]
FROM    sys.database_service_objectives   AS ds
JOIN    sys.databases                     AS db ON ds.database_id = db.database_id
;

變更資料倉儲單位

Azure 入口網站

若要變更 DWU:

  1. 開啟 Azure 入口網站、開啟您的資料庫,然後選取 [調整]。

  2. 在 [調整] 下方,將滑桿向左或右移動來變更 DWU 設定。

  3. 選取 [儲存]。 確認訊息隨即出現。 按一下 [是] 以確認,或選取 [否] 以取消。

PowerShell

注意

建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 請參閱安裝 Azure PowerShell 以開始使用。 若要瞭解如何遷移至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 遷移至 Az。

若要變更 DWU,請使用 Set-AzSqlDatabase PowerShell Cmdlet。 下列範例會將裝載在 MyServer 伺服器上的資料庫 MySQLDW 的服務等級目標設定為 DW1000。

Set-AzSqlDatabase -DatabaseName "MySQLDW" -ServerName "MyServer" -RequestedServiceObjectiveName "DW1000c"

如需詳細資訊,請參閱適用於 Azure Synapse Analytics 的 PowerShell Cmdlet

T-SQL

利用 T-SQL,您可以檢視目前的 DWU 設定、變更設定,以及檢查進度。

若要變更 DWU︰

  1. 連接到與您的伺服器相關聯的 master 資料庫。
  2. 使用 ALTER DATABASE TSQL 陳述式。 下例範例會將資料庫 MySQLDW 的服務等級目標設定為 DW1000c。
ALTER DATABASE MySQLDW
MODIFY (SERVICE_OBJECTIVE = 'DW1000c')
;

REST API

若要變更 DWU,請使用建立或更新資料庫 REST API。 下例會將裝載在 MyServer 伺服器上的資料庫 MySQLDW 的服務等級目標設定為 DW1000c。 此伺服器位於 ResourceGroup1 這個 Azure 資源群組。

PUT https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Sql/servers/{server-name}/databases/{database-name}?api-version=2014-04-01-preview HTTP/1.1
Content-Type: application/json; charset=UTF-8

{
    "properties": {
        "requestedServiceObjectiveName": DW1000
    }
}

如需更多 REST API 範例,請參閱適用於 Azure Synapse Analytics 的 REST API

檢查 DWU 變更的狀態

DWU 變更可能需要幾分鐘的時間才能完成。 如果正在進行自動調整,請考慮實作邏輯,以確保在繼續進行其他動作之前,已完成特定作業。

透過各種端點檢查資料庫狀態,可讓您正確實作自動化。 入口網站會提供資料庫目前的狀態,也會在作業完成時提供通知,但不允許以程式設計方式檢查狀態。

您無法使用 Azure 入口網站來檢查相應放大作業的資料庫狀態。

檢查 DWU 變更的狀態:

  1. 連接到與您的伺服器相關聯的 master 資料庫。
  2. 提交下列查詢以檢查資料庫狀態。
SELECT    *
FROM      sys.databases
;
  1. 提交下列查詢以檢查作業的狀態
SELECT    *
FROM      sys.dm_operation_status
WHERE     resource_type_desc = 'Database'
AND       major_resource_id = 'MySQLDW'
;

此 DMV 會傳回您的專用 SQL 集區上各種管理作業的相關資訊,例如,作業和作業的狀態 (不是 IN_PROGRESS 就是 COMPLETED)。

調整工作流程

當您啟動擴縮作業時,系統會先刪除所有開啟的工作階段,回復所有開啟的交易以確保一致性狀態。 針對調整規模作業,只有在這個交易回復完成後調整才會發生。

  • 針對擴大作業,系統會將所有計算節點中斷連結、佈建額外的計算節點,然後重新連結到儲存層。
  • 針對連結作業,系統則會將所有計算節點中斷連結,然後只將所需的節點重新連結到儲存層。

後續步驟

若要深入了解管理效能,請參閱適用於工作負載管理的資源類別記憶體和並行存取限制