Tip
Microsoft Fabric Data Warehouse 是一個企業規模的關聯式倉庫,建立在資料湖基礎上,具備未來準備架構、內建 AI 及新功能。 如果你是資料倉儲新手,建議先從Fabric Data Warehouse開始。 現有的 專用 SQL 工作負載可升級至 Fabric,以取得資料科學、即時分析與報告等多項新功能。
本文說明 Synapse SQL 的架構元件。 此外,也說明 Azure Synapse SQL 如何將分散式查詢處理功能與 Azure 儲存體結合,以達到高效能和延展性。
Synapse SQL 架構元件
Synapse SQL 會使用擴增架構,將資料的計算處理散發到多個節點。 計算會與儲存體分開,讓您可以獨立擴展系統中的計算能力,而不依賴於資料。
針對專用 SQL 集區,縮放單位是稱為資料倉儲單位的計算能力抽象概念。
針對無伺服器 SQL 集區,系統會自動調整資源以滿足查詢需求。 當拓撲隨著時間新增、移除節點或故障轉移而有所變更,會因應變更,並確保您的查詢具有足夠的資源並順利完成。 例如,下圖顯示使用 4 個計算節點執行查詢的無伺服器 SQL 集區。
Synapse SQL 使用以節點為基礎的架構。 應用程式會連線到控制節點並發出 T-SQL 命令,這是 Synapse SQL 的單一進入點。
Azure Synapse SQL 控制節點會利用分散式查詢引擎,將查詢最佳化以進行平行處理,然後將作業傳遞到計算節點,以平行方式執行其工作。
無伺服器 SQL 集區控制節點會利用分散式查詢處理 (DQP) 引擎,將使用者查詢分割成較小的查詢 (在計算節點上執行),以最佳化和協調使用者查詢的分散式執行。 每個小型查詢稱為工作,代表分散式執行單位。 它會從儲存裝置中讀取檔案,將結果與其他任務結合,並將從其他任務擷取的數據進行分組或排序。
計算節點會在 Azure 儲存體中儲存所有使用者資料,並執行平行查詢。 資料移動服務 (DMS) 是系統層級的內部服務,其會視需要在節點之間移動資料,以平行方式執行查詢並傳回精確的結果。
在使用 Synapse SQL 並採用分離的儲存體和計算架構時,可以享受計算能力的獨立調整,無需考慮您的儲存體需求。 針對無伺服器 SQL 集區,調整會自動完成,而針對專用 SQL 集區則可以:
- 在專用 SQL 集區內增加或縮小計算能力,而不用移動資料。
- 暫停計算容量,同時讓資料保持不變,因此您只需支付儲存體的費用。
- 在營運時間內恢復計算容量。
Azure 儲存體
Synapse SQL 會使用 Azure 儲存體來保護您使用者資料的安全。 因為您的資料是由 Azure 儲存體儲存及管理的,所以您的儲存體耗用量會分開計費。
無伺服器 SQL 集區可讓您查詢資料湖檔案,而專用 SQL 集區可讓您查詢及內嵌資料湖檔案中的資料。 當資料導入專用 SQL 集區時,資料會分片到distributions中,以最佳化系統效能。 當您定義資料表時,可以選擇要用來散發資料的分區化模式。 支援以下分區化模式:
- 雜湊
- 循環配置資源
- 複製
控制節點
控制節點是架構的大腦。 它是與所有應用程式及連線互動的前端。
在 Synapse SQL 中,分散式查詢引擎會在控制節點上執行,以最佳化和協調平行查詢。 當您將 T-SQL 查詢提交到資料倉儲 SQL 集區時,控制節點會將其轉換為在每個資料分佈上平行執行的查詢。
在無伺服器 SQL 集區中,DQP 引擎會在控制節點上執行,藉由將使用者查詢分割成較小的查詢 (在計算節點上執行),以最佳化和協調使用者查詢的分散式執行。 也會指派每個節點要處理的檔案集合。
計算節點
計算節點可提供計算能力。
在專用 SQL 集區中,資料分布對應到計算節點進行處理。 當您支付更多計算資源時,資源池會將分配重新映射到可用的計算節點。 計算節點數目範圍是從 1 到 60,取決於專用 SQL 集區的服務等級。 每個計算節點都有會在系統檢視中顯示的節點識別碼。 您可以在名稱開頭為 sys.pdw_nodes 的系統檢視中尋找 node_id 資料行,以查看計算節點識別碼。 如需這些系統檢視的清單,請參閱 Synapse SQL 系統檢視。
在無伺服器 SQL 集區中,會為每個計算節點指派工作和一組要在其上執行工作的檔案。 Task 作為分散式查詢的執行單位,實際上是用戶已提交查詢的一部分。 自動調整會生效,以確保使用足夠的計算節點來執行使用者查詢。
資料移動服務
資料移動服務 (DMS) 是專用 SQL 集區中的資料傳輸技術,可協調計算節點之間的資料移動。 某些查詢需要資料移動,以確保平行查詢會傳回精確的結果。 若資料移動是必要的,DMS 確保正確的資料會到達正確的位置。
分佈
分散是儲存和處理的基本單位,適用於在專用 SQL 集區中運行分布式資料的平行查詢。 當專用 SQL 集區執行查詢時,會將工作分成 60 個平行執行的較小查詢。
這 60 個較小查詢中的每一個都會在其中一個資料分配中執行。 每個計算節點都會管理 60 個發行版中的一個或多個。 具有最大計算資源的專用 SQL 集區,在每個計算節點上都有一個分佈。 具有最小計算資源的專用 SQL 集區,其所有資料分配都會在一個計算節點上。
雜湊分散式資料表
雜湊分散式資料表可以針對大型資料表上的聯結和彙總提供最高查詢效能。
為了將資料分區化到雜湊分散化資料表,專用 SQL 集區會使用雜湊函式,確定性地將每個資料列指派給一個分佈。 在資料表定義中,其中一個資料行會指定為散發資料行。 雜湊函數使用散發資料欄中的值,將每個資料列分配至一個分配。
下圖說明非分散式資料表如何儲存為哈希分散式資料表。
- 每個資料列屬於一個分配。
- 決定性雜湊演算法會將每個資料列指派給一個分佈。
- 每個分布的資料表的資料列數目會隨著不同大小的資料表顯示出變化。
選取分配欄位時具有績效考量,例如資料的相異性、資料偏斜,以及各種在系統上執行的查詢類型。
循環分配分散式資料表
循環分配資料表是最簡單的建立資料表方式,當用作載入資料的暫存資料表時,可以提供快速的效能。
輪詢分散式資料表會在表格中均勻分佈資料,但不進行任何進一步的最佳化。 會先隨機選擇一個分佈,然後將資料列緩衝區逐步指派給分佈。 將資料快速載入循環資料表,但搭配哈希分散資料表通常會有更好的查詢效能。 在循環分配表上進行聯結需要重新分配資料,這需要額外的時間。
複製資料表
複寫資料表可為小型資料表提供最快速的查詢效能。
複寫的資料表會在每個計算節點上快取一份完整的資料表複本。 因此,複寫資料表可使在進行聯結或彙總之前,不需要在計算節點之間傳輸資料。 複寫的資料表最適合與小型資料表搭配使用。 需要額外的儲存空間,且寫入資料時會產生額外的負擔,這讓大型資料表變得不切實際。
下圖顯示快取在每個計算節點的第一個分佈上的複製的資料表。
相關內容
現在您已稍微了解 Synapse SQL,請了解如何快速建立專用 SQL 集區和載入範例資料。 或是開始使用無伺服器 SQL 集區。 如果您不熟悉 Azure,當您遇到新術語時,Azure 基本概念 可能會非常有幫助。