Udostępnij za pośrednictwem


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.

  1. Otwórz projekt ASA w programie VS Code. Przejdź do pliku zapytania *.asaql i wybierz pozycję Symulowanie zadania , aby uruchomić symulację zadania.

    Zrzut ekranu przedstawiający symulator diagramu zadań otwierania programu VS Code w pliku zapytania.

  2. 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.

    Zrzut ekranu programu VS Code korzystający z symulatora diagramu zadań i przedstawiający topologię zadań.

  3. Ponieważ to zapytanie NIE jest równoległe, możesz wybrać kartę Ulepszenia, aby wyświetlić sugestie dotyczące ulepszania zapytania.

    Zrzut ekranu przedstawiający program VS Code korzystający z symulatora diagramu zadań i sugestie dotyczące edycji zapytania.

  4. Wybierz krok zapytania na liście ulepszeń. Zobaczysz, że odpowiednie wiersze są wyróżnione i możesz edytować zapytanie na podstawie sugestii.

    Zrzut ekranu przedstawiający program VS Code używający symulatora diagramu zadań i wyróżniający krok zapytania.

    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.

  5. 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.

    Zrzut ekranu przedstawiający diagram odświeżania po zaktualizowaniu zapytania.

  6. 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.

    Zrzut ekranu programu VS Code korzystający z dostosowania SU.

Używanie symulacji zadań w Azure Portal

  1. 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. Zrzut ekranu przedstawiający otwieranie symulacji zadania w portalu.
  2. Wybierz pozycję Ulepszenia, aby wyświetlić sugestie dotyczące poprawy równoległości zapytań. Zrzut ekranu przedstawia ulepszenia symulacji otwierania zadania w portalu.
  3. Dostosuj jednostki przesyłania strumieniowego, aby zobaczyć, ile jednostek przesyłania strumieniowego jest potrzebnych do obsługi obciążenia. Zrzut ekranu przedstawiający sposób dostosowywania su w portalu.

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.

Zrzut ekranu w formacie GIF przedstawiający diagram poziomu procesora symulatora.

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ę.

Zrzut ekranu przedstawia funkcję mapowania symulacji zadań w programie VS Code.

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: