Teilen über


Abfrageoptimierung mithilfe der Auftragssimulation

Eine Möglichkeit, die Leistung eines Azure Stream Analytics-Auftrags (ASA) zu verbessern, besteht in der Parallelisierung der Abfragen. In diesem Artikel wird veranschaulicht, wie Sie die Auftragssimulation in Visual Studio Code (VS Code) verwenden und die Abfrageparallelität für einen Stream Analytics-Auftrag auswerten. Sie lernen, eine Abfrageausführung mit unterschiedlich vielen Streamingeinheiten zu visualisieren und die Abfrageparallelität anhand von Bearbeitungsvorschlägen zu verbessern.

Was ist Abfrageparallelität?

Abfrageparallelität bedeutet, dass die Arbeitsauslastung einer Abfrage durch die Erstellung mehrerer Prozesse (oder Streamingknoten) aufgeteilt wird, die parallel ausgeführt werden. So wird die Gesamtausführungszeit der Abfrage erheblich reduziert, wodurch weniger Streamingstunden benötigt werden.

Damit ein Auftrag parallel ausgeführt werden kann, müssen alle Eingaben, Ausgaben und Abfrageschritte koordiniert sein und die gleichen Partitionsschlüssel verwenden. Die Partitionierung der Abfragelogik wird durch die Schlüssel bestimmt, die für Aggregationen (GROUP BY) verwendet werden.

Weitere Informationen zur Abfrageparallelisierung finden Sie unter Anwenden der Abfrageparallelisierung in Azure Stream Analytics.

Verwenden der Auftragssimulation in VS Code

Beim Feature Auftragssimulation wird simuliert, wie die Topologie bei diesem Auftrag in Azure ausgeführt werden würde. In diesem Tutorial lernen Sie, die Abfrageleistung anhand von Bearbeitungsvorschlägen zu verbessern und die Ausführung zu parallelisieren. Als Beispiel wird ein nicht paralleler Auftrag verwendet, der Eingabedaten von einem Event Hub empfängt und die Ergebnisse an einen anderen Event Hub sendet.

Voraussetzungen:

  • ASA-Tools-Erweiterung für Visual Studio Code. Wenn Sie ihn noch nicht installiert haben, befolgen Sie dieser Anleitung, um die Installation durchzuführen.
  • Konfigurieren Sie Liveeingabe und Liveausgabe für Ihren Stream Analytics-Auftrag.
  • Sie müssen die Liveeingabe und -ausgabe in die Abfrage einschließen.

Hinweis

Dabei kann keine Auftragsausführungstopologie für lokale Ein- und Ausgaben simuliert werden. Während der Simulation werden keine Daten an das Ausgabeziel gesendet.

  1. Öffnen Sie das ASA-Projekt in VS Code. Wechseln Sie zur Abfragedatei *.asaql, und wählen Sie Auftrag simulieren aus, um die Auftragssimulation zu starten.

    Screenshot von Visual Studio Code beim Öffnen des Auftragsdiagrammsimulators in der Abfragedatei.

  2. Auf der Registerkarte Diagramm finden Sie die Anzahl der Streamingknoten, die dem Auftrag zugeordnet sind, und die Anzahl der Partitionen in jedem Streamingknoten. Der folgende Screenshot zeigt ein Beispiel für einen nicht parallelen Auftrag, bei dem die Daten zwischen den Knoten fließen.

    Screenshot von Visual Studio Code beim Verwenden des Auftragsdiagrammsimulators und Anzeigen der Auftragstopologie.

  3. Da diese Abfrage NICHT parallel ausgeführt wird, können Sie die Registerkarte Verbesserungen auswählen und sich die Vorschläge zum Optimieren der Abfrage ansehen.

    Screenshot von Visual Studio Code beim Verwenden des Auftragsdiagrammsimulators und Anzeigen der Bearbeitungsvorschläge für die Abfrage.

  4. Wählen Sie einen Abfrageschritt in der Liste der Verbesserungen aus. Dann werden die zugehörigen Zeilen hervorgehoben, und Sie können die Abfrage basierend auf den Vorschlägen bearbeiten.

    Screenshot von Visual Studio Code beim Verwenden des Auftragsdiagrammsimulators mit Hervorhebung des Abfrageschritts.

    Hinweis

    Hier sehen Sie Bearbeitungsvorschläge für die Verbesserung der Abfrageparallelität. Wenn Sie jedoch eine Aggregatfunktion für alle Partitionen verwenden, sind parallele Abfragen für Ihre Szenarios möglicherweise nicht umsetzbar.

  5. In diesem Beispiel fügen Sie PartitionId zu Zeile 22 hinzu und speichern Ihre Änderung. Anschließend können Sie die Option Simulation aktualisieren verwenden, um das neue Diagramm anzuzeigen.

    Screenshot: Aktualisierung des Diagramms nach der Bearbeitung der Abfrage

  6. Sie können auch die Streamingeinheiten anpassen, um zu verbessern, wie Streamingknoten verschiedenen SUs zugeordnet werden. Auf diese Weise erhalten Sie eine Vorstellung davon, wie viele Streamingeinheiten Sie für die Workload benötigen.

    Screenshot der Anpassung der Streaming-Einheiten in Visual Studio Code.

Verwenden der Auftragssimulation im Azure-Portal

  1. Wechseln Sie zu Ihrem Abfrage-Editor im Azure-Portal, und wählen Sie im unteren Bereich Auftragssimulation aus. Der Auftrag, der die Topologie ausführt, wird basierend auf Ihrer Abfrage und vordefinierten Streamingeinheiten simuliert. Ein Screenshot zeigt das Öffnen der Auftragssimulation im Portal.
  2. Wählen Sie „Verbesserungen“ aus, um die Vorschläge zur Verbesserung der Abfrageparallelität anzuzeigen. Ein Screenshot zeigt das Öffnen der Auftragssimulationsverbesserungen im Portal.
  3. Passen Sie die Streamingeinheiten an, um zu ermitteln, wie viele SUs Sie für die Verarbeitung der Workload benötigen. Ein Screenshot zeigt, wie Streamingeinheiten im Portal angepasst werden.

Diagramm auf Prozessorebene

Nachdem Sie die Streaming-Einheiten angepasst haben, um die Topologie Ihres Auftrags zu simulieren, können Sie jeden der Streaming-Knoten erweitern, um zu beobachten, wie Ihre Daten auf Prozessorebene verarbeitet werden.

Screenshot im GIF-Format, der das Diagramm auf Prozessorebene des Simulators anzeigt.

Das Diagramm auf Prozessorebene ermöglicht Folgendes:

  • Beobachten Sie, wie die Eingabepartitionen auf jedem Streaming-Knoten zugeordnet und verarbeitet werden.
  • Finden Sie heraus, was die Zeitverschiebung für die einzelnen Computerprozessoren ist.
  • Geben Sie Informationen darüber an, ob die Eingabe- und Ausgabeprozessoren parallel ausgerichtet sind.

Um den Prozessor dem Abfrageschritt zuzuordnen, doppelklicken Sie im Diagramm darauf. Dieses Feature hilft Ihnen, die Abfrageschritte zu finden, die die Aggregierung ausführen.

Ein Screenshot zeigt das Auftragssimulations-Zuordnungsfeature in VS Code.

Verbesserungsvorschläge

Hier finden Sie die Erläuterungen zu den Verbesserungen:

Typ Bedeutung
Angepasste Partition nicht unterstützt Ändern Sie den Eingabepartitionsschlüssel „xxx“ in „xxx“.
Anzahl der Partitionen stimmt nicht überein Die Eingabe und Ausgabe müssen die gleiche Anzahl von Partitionen aufweisen.
Partitionsschlüssel stimmen nicht überein Die Eingabe, Ausgabe und jeder Abfrageschritt müssen denselben Partitionsschlüssel verwenden.
Anzahl der Eingabepartitionen stimmt nicht überein Alle Eingaben müssen die gleiche Anzahl von Partitionen aufweisen.
Eingabepartitionsschlüssel stimmen nicht überein Alle Eingaben müssen denselben Partitionsschlüssel verwenden.
Niedriger Kompatibilitätsgrad Erhöhen Sie CompatibilityLevel in der Datei JobConfig.json.
Ausgabepartitionsschlüssel nicht gefunden Sie müssen den angegebenen Partitionsschlüssel für die Ausgabe verwenden.
Angepasste Partition nicht unterstützt Sie können nur vordefinierte Partitionsschlüssel verwenden.
Abfrageschritt ohne Partition Ihre Abfrage verwendet keine PARTITION BY-Klausel.

Nächste Schritte

Weitere Informationen zur Abfrageparallelisierung und zum Auftragsdiagramm finden Sie in diesen Tutorials: