使用作業模擬最佳化查詢
改善串流分析 (ASA) 作業效能的其中一個方法,是在查詢中套用平行處理原則。 本文示範如何使用 Azure 入口網站中的作業模擬和 Visual Studio Code (VS Code) 來評估串流分析作業的查詢平行處理原則。 您將了解如何以不同數目的串流單位將查詢執行視覺化,並根據編輯建議改善查詢平行處理原則。
什麼是平行查詢?
查詢平行處理原則會建立多個程序 (或串流節點) 並同時執行,來分散工作負載。 它可大幅縮短查詢的整體執行時間,因此所需的串流時數較少。
若要讓作業平行,所有輸入、輸出和查詢步驟,都必須對應儲存並使用相同的分割區索引鍵。 查詢邏輯資料分割是由用於彙總的索引鍵 (GROUP BY) 所決定。
如果您想要深入了解查詢平行處理,請參閱在 Azure 串流分析中運用查詢平行處理。
在 VS Code 中使用作業模擬
作業模擬功能會模擬作業在 Azure 中執行拓撲的方式。 在本教學課程中,您將了解如何根據編輯建議來改善查詢效能,並讓查詢以平行方式執行。 例如,我們使用非平行作業,會從事件中樞取得輸入資料,並將結果傳送至另一個事件中樞。
先決條件:
- 適用於 VS Code 的 ASA Tools 延伸模組。 如果您尚未安裝,請遵循本指南進行安裝。
- 設定串流分析作業的即時輸入和即時輸出。
- 您必須在查詢中包含即時輸入和輸出。
注意
作業模擬無法模擬本機輸入和輸出的作業執行拓撲。 模擬期間不會將資料傳送至輸出目的地。
在 VS Code 中開啟 ASA 專案。 移至查詢檔案 *.asaql,然後選取 [模擬作業] 以啟動作業模擬。
在 [圖表] 索引標籤下方,它會顯示配置給作業的串流節點數目,以及每個串流節點中的資料分割數目。 下列螢幕擷取畫面是節點之間資料流動的非平行作業範例。
由於此查詢不是平行的,因此您可以選取 [增強功能] 索引標籤,以檢視改善查詢的建議。
在增強功能清單中選取查詢步驟,您會看到對應的行已醒目提示,而您可以根據建議編輯查詢。
注意
這些是改善查詢平行處理原則的編輯建議。 不過,如果您在所有分割區都使用了彙總函式,則平行查詢可能不適用於您的案例。
在此範例中,您會將 PartitionId 新增到第 22 行,然後儲存您的變更。 接著,您可以使用 [重新整理模擬] 來取得新的圖表。
您也可以調整串流單位,促使系統以不同的 SU 配置來串流節點。 它可讓您了解處理工作負載所需的 SU 數目。
在 Azure 入口網站中使用作業模擬
- 移至 Azure 入口網站中的查詢編輯器,然後選取底部窗格中的 [作業模擬]。 它會根據查詢和預先定義的串流單位,模擬執行拓撲的作業。
- 選取 [增強功能] 以檢視改善查詢平行處理原則的建議。
- 調整串流單位,以查看處理工作負載所需的 SU 數目。
處理器層級圖表
調整串流單位以模擬作業拓撲之後,您可以展開任何串流節點,觀察資料在處理器層級的處理方式。
處理器層級圖表可讓您:
- 觀察如何在每個串流節點上配置和處理輸入分割區。
- 了解每個運算處理器的時間移位為何。
- 提供輸入和輸出處理器是否平行對應儲存的資訊。
若要使用查詢步驟對應處理器,請在圖表上按兩下以選取。 這項功能可協助您找出執行彙總的查詢步驟。
增強功能建議
以下是增強功能的說明:
類型 | 意義 |
---|---|
不支援自訂分割區 | 將輸入 'xxx' 分割區索引鍵變更為 'xxx'。 |
分割區數目不相符 | 輸入和輸出的分割區數目必須相同。 |
分割區索引鍵不相符 | 輸入、輸出和每個查詢步驟都必須使用相同的分割區索引鍵。 |
輸入分割區數目不相符 | 所有輸入的分割區數目都必須相同。 |
輸入分割區索引鍵不相符 | 所有輸入都必須使用相同的分割區索引鍵。 |
低相容性層級 | 升級 JobConfig.json 檔案上的 CompatibilityLevel。 |
找不到輸出分割區索引鍵 | 您必須針對輸出使用指定的分割區索引鍵。 |
不支援自訂分割區 | 您只能使用預先定義的分割區索引鍵。 |
未使用分割區的查詢步驟 | 您的查詢未使用任何 PARTITION BY 子句。 |
下一步
如果您想要深入了解查詢平行處理和作業圖表,請參閱下列教學課程: