Optymalizowanie zapytania przy użyciu symulacji zadań
Jednym ze sposobów zwiększenia wydajności zadania usługi Azure Stream Analytics (ASA) jest zastosowanie równoległości w zapytaniu. W tym artykule pokazano, jak używać symulacji zadań w Azure Portal i Visual Studio Code (VS Code), aby ocenić równoległość zapytań dla zadania usługi Stream Analytics. Dowiesz się, jak wizualizować wykonywanie zapytań przy użyciu różnych jednostek przesyłania strumieniowego i ulepszać równoległość zapytań na podstawie sugestii edycji.
Co to jest zapytanie równoległe?
Równoległość zapytań dzieli obciążenie zapytania, tworząc wiele procesów (lub węzłów przesyłania strumieniowego) i wykonując je równolegle. Znacznie skraca to ogólny czas wykonywania zapytania, dlatego potrzebne są mniej godzin przesyłania strumieniowego.
Aby zadanie było równoległe, wszystkie dane wejściowe, dane wyjściowe i kroki zapytania muszą być wyrównane i używać tych samych kluczy partycji. Partycjonowanie logiki zapytania jest określane przez klucze używane do agregacji (GROUP BY).
Jeśli chcesz dowiedzieć się więcej na temat przetwarzania równoległego zapytań, zobacz Korzystanie z przetwarzania równoległego zapytań w usłudze Azure Stream Analytics.
Korzystanie z symulacji zadań w programie VS Code
Funkcja symulacji zadania symuluje sposób uruchamiania topologii zadania na platformie Azure. Z tego samouczka dowiesz się, jak poprawić wydajność zapytań na podstawie sugestii edycji i sprawić, aby była wykonywana równolegle. Na przykład używamy zadania nieparallelowego, które pobiera dane wejściowe z centrum zdarzeń i wysyła wyniki do innego centrum zdarzeń.
Wymagania wstępne:
- Rozszerzenie narzędzi ASA dla programu VS Code. Jeśli jeszcze go nie zainstalowano, postępuj zgodnie z tym przewodnikiem , aby go zainstalować.
- Skonfiguruj dane wejściowe na żywo i dane wyjściowe na żywo dla zadania usługi Stream Analytics.
- W zapytaniu należy uwzględnić dane wejściowe i wyjściowe na żywo.
Uwaga
Symulacja zadania nie może symulować zadania uruchomionego topologii dla lokalnych danych wejściowych i wyjściowych. Podczas symulacji żadne dane nie zostaną wysłane do miejsca docelowego danych wyjściowych.
Otwórz projekt ASA w programie VS Code. Przejdź do pliku zapytania *.asaql i wybierz pozycję Symulowanie zadania , aby uruchomić symulację zadania.
Na karcie Diagram jest wyświetlana liczba węzłów przesyłania strumieniowego przydzielonych do zadania oraz liczba partycji w każdym węźle przesyłania strumieniowego. Poniższy zrzut ekranu to przykład zadania nieparallelowego, w którym dane przepływają między węzłami.
Ponieważ to zapytanie NIE jest równoległe, możesz wybrać kartę Ulepszenia, aby wyświetlić sugestie dotyczące ulepszania zapytania.
Wybierz krok zapytania na liście ulepszeń. Zobaczysz, że odpowiednie wiersze są wyróżnione i możesz edytować zapytanie na podstawie sugestii.
Uwaga
Są to sugestie dotyczące edycji służące do ulepszania równoległości zapytań. Jeśli jednak używasz funkcji agregującej we wszystkich partycjach, posiadanie zapytania równoległego może nie być stosowane w scenariuszach.
W tym przykładzie dodasz identyfikator PartitionId do wiersza 22 i zapiszesz zmianę. Następnie możesz użyć symulacji odświeżania , aby pobrać nowy diagram.
Można również dostosować jednostki przesyłania strumieniowego , aby pobudzić sposób przydzielania węzłów przesyłania strumieniowego za pomocą różnych jednostek przesyłania strumieniowego. Daje to pojęcie o tylu jednostkach jednostki operacyjnego, które są potrzebne do obsługi obciążenia.
Używanie symulacji zadań w Azure Portal
- Przejdź do edytora zapytań w Azure Portal i wybierz pozycję Symulacja zadań w dolnym okienku. Symuluje zadanie uruchomionej topologii na podstawie zapytań i wstępnie zdefiniowanych jednostek przesyłania strumieniowego.
- Wybierz pozycję Ulepszenia, aby wyświetlić sugestie dotyczące poprawy równoległości zapytań.
- Dostosuj jednostki przesyłania strumieniowego, aby zobaczyć, ile jednostek przesyłania strumieniowego jest potrzebnych do obsługi obciążenia.
Diagram na poziomie procesora
Po dostosowaniu jednostek przesyłania strumieniowego w celu symulowania topologii zadania można rozwinąć dowolny z węzłów przesyłania strumieniowego, aby obserwować sposób przetwarzania danych na poziomie procesora.
Diagram na poziomie procesora umożliwia:
- obserwuj, jak partycje wejściowe są przydzielane i przetwarzane w każdym węźle przesyłania strumieniowego.
- dowiedz się, co to jest zmiana czasu dla każdego procesora obliczeniowego.
- podaj informacje o tym, czy procesory wejściowe i wyjściowe są wyrównane równolegle.
Aby zamapować procesor za pomocą kroku zapytania, wybierz dwukrotnie na diagramie. Ta funkcja ułatwia zlokalizowanie kroków zapytania wykonujących agregację.
Sugestie dotyczące ulepszeń
Poniżej przedstawiono wyjaśnienia dotyczące ulepszeń:
Typ | Znaczenie |
---|---|
Niestandardowa partycja nie jest obsługiwana | Zmień wejściowy klucz partycji "xxx" na "xxx". |
Liczba partycji, które nie są zgodne | Dane wejściowe i wyjściowe muszą mieć taką samą liczbę partycji. |
Klucze partycji nie są zgodne | Dane wejściowe, wyjściowe i każdy krok zapytania muszą używać tego samego klucza partycji. |
Liczba niezgodnych partycji wejściowych | Wszystkie dane wejściowe muszą mieć taką samą liczbę partycji. |
Klucze partycji wejściowej są niezgodne | Wszystkie dane wejściowe muszą używać tego samego klucza partycji. |
Niski poziom zgodności | Uaktualnij plik CompatibilityLevel w pliku JobConfig.json . |
Nie można odnaleźć klucza partycji wyjściowej | Musisz użyć określonego klucza partycji dla danych wyjściowych. |
Niestandardowa partycja nie jest obsługiwana | Można używać tylko wstępnie zdefiniowanych kluczy partycji. |
Krok zapytania nie korzysta z partycji | Zapytanie nie używa żadnej klauzuli PARTITION BY. |
Następne kroki
Jeśli chcesz dowiedzieć się więcej na temat przetwarzania równoległego zapytań i diagramu zadań, zapoznaj się z następującymi samouczkami: