Delen via


Query optimaliseren met behulp van taaksimulatie

Een manier om de prestaties van een ASA-taak (Azure Stream Analytics) te verbeteren, is door parallellisme toe te passen in query's. In dit artikel ziet u hoe u de taaksimulatie in de Azure Portal en Visual Studio Code (VS Code) gebruikt om de parallelle uitvoering van query's voor een Stream Analytics-taak te evalueren. U leert hoe u de uitvoering van een query met verschillende streaming-eenheden kunt visualiseren en de parallelle uitvoering van query's kunt verbeteren op basis van de bewerkingssuggesties.

Wat is parallelle query?

Queryparallellisme verdeelt de werkbelasting van een query door meerdere processen (of streamingknooppunten) te maken en parallel uit te voeren. Het vermindert de totale uitvoeringstijd van de query aanzienlijk en er zijn dus minder streaming-uren nodig.

Een taak kan alleen parallel worden uitgevoerd als alle invoer, uitvoer en querystappen zijn uitgelijnd en dezelfde partitiesleutels gebruiken. De partitionering van querylogica wordt bepaald door de sleutels die worden gebruikt voor aggregaties (GROUP BY).

Zie Queryparallellisatie gebruiken in Azure Stream Analytics voor meer informatie over queryparallellisatie.

Taaksimulatie gebruiken in VS Code

De functie Taaksimulatie simuleert hoe de taak topologie in Azure zou uitvoeren. In deze zelfstudie leert u hoe u queryprestaties kunt verbeteren op basis van suggesties voor bewerken en hoe u deze parallel kunt uitvoeren. Als voorbeeld gebruiken we een niet-parallel taak waarmee de invoergegevens van een Event Hub worden opgehaald en de resultaten naar een andere Event Hub worden verzonden.

Vereisten:

  • ASA Tools-extensie voor VS Code. Als u deze nog niet hebt geïnstalleerd, volgt u deze handleiding om te installeren.
  • Live-invoer en live-uitvoer configureren voor uw Stream Analytics-taak.
  • U moet live-invoer en uitvoer opnemen in de query.

Notitie

De taaksimulatie kan de topologie voor lokale invoer en uitvoer niet simuleren. Er worden tijdens de simulatie geen gegevens naar de uitvoerbestemming verzonden.

  1. Open het ASA-project in VS Code. Ga naar het querybestand *.asaql en selecteer Taak simuleren om taaksimulatie te starten.

    Schermopname van de taakdiagramsimulator van VS Code openen in het querybestand.

  2. Op het tabblad Diagram ziet u het aantal streamingknooppunten dat is toegewezen aan de taak en het aantal partities in elk streamingknooppunt. De volgende schermopname is een voorbeeld van een niet-allel taak waarbij de gegevens tussen knooppunten stromen.

    Schermopname van VS Code met behulp van taakdiagramsimulator en met taaktopologie.

  3. Omdat deze query NIET parallel is, kunt u het tabblad Verbeteringen selecteren om suggesties voor het verbeteren van de query weer te geven.

    Schermopname van VS Code met behulp van taakdiagramsimulator en met de suggesties voor het bewerken van query's.

  4. Selecteer querystap in de lijst met verbeteringen, u ziet dat de bijbehorende regels zijn gemarkeerd en u kunt de query bewerken op basis van de suggesties.

    Schermopname van VS Code met behulp van de taakdiagramsimulator en de querystap gemarkeerd.

    Notitie

    Dit zijn bewerkingssuggesties voor het verbeteren van de parallelle uitvoering van query's. Als u echter een statistische functie gebruikt voor alle partities, is het mogelijk dat een parallelle query niet van toepassing is op uw scenario's.

  5. In dit voorbeeld voegt u de PartitionId toe aan regel 22 en slaat u de wijziging op. Vervolgens kunt u de vernieuwingssimulatie gebruiken om het nieuwe diagram op te halen.

    Schermopname van het vernieuwingsdiagram na het bijwerken van de query.

  6. U kunt ook streaming-eenheden aanpassen om te stimuleren hoe streamingknooppunten worden toegewezen aan verschillende SUs. Het geeft u een idee van het aantal RU's dat u nodig hebt om uw workload te verwerken.

    Schermopname van de VS Code met su-verstelfunctie.

Taaksimulatie gebruiken in de Azure Portal

  1. Ga naar de query-editor in Azure Portal en selecteer Taaksimulatie in het onderste deelvenster. Hiermee wordt de taak uitgevoerde topologie gesimuleerd op basis van uw query en vooraf gedefinieerde streaming-eenheden. Een schermopname van het openen van taaksimulatie in de portal.
  2. Selecteer Verbeteringen om de suggesties voor het verbeteren van de parallelle uitvoering van query's weer te geven. In een schermopname ziet u verbeteringen in de geopende taaksimulatie in de portal.
  3. Pas de streaming-eenheden aan om te zien hoeveel RU's u nodig hebt voor het afhandelen van de workload. Een schermopname die laat zien hoe u su kunt aanpassen in de portal.

Diagram op processorniveau

Nadat u de streaming-eenheden hebt aangepast om de topologie van uw taak te simuleren, kunt u elk van de streamingknooppunten uitvouwen om te zien hoe uw gegevens op processorniveau worden verwerkt.

Een schermopname in GIF-indeling met het diagram op processorniveau van de simulator.

Met het diagram op processorniveau kunt u het volgende doen:

  • bekijk hoe de invoerpartities worden toegewezen en verwerkt op elk streamingknooppunt.
  • ontdek wat de tijdsverschuiving is voor elke computerprocessor.
  • geef informatie op over of de invoer- en uitvoerprocessors parallel zijn uitgelijnd.

Als u de processor wilt toewijzen aan de querystap, selecteert u het diagram. Met deze functie kunt u de querystappen voor het samenvoegen vinden.

Een schermopname van de toewijzingsfunctie voor taaksimulatie in VS Code.

Suggesties voor verbetering

Hier volgen de verklaringen voor verbeteringen:

Type Betekenis
Aangepaste partitie wordt niet ondersteund Wijzig de invoer 'xxx'-partitiesleutel in 'xxx'.
Aantal partities dat niet overeenkomt Invoer en uitvoer moeten hetzelfde aantal partities hebben.
Partitiesleutels komen niet overeen Invoer, uitvoer en elke querystap moeten dezelfde partitiesleutel gebruiken.
Aantal invoerpartities dat niet overeenkomt Alle invoer moet hetzelfde aantal partities hebben.
Invoerpartitiesleutels komen niet overeen Alle invoer moet dezelfde partitiesleutel gebruiken.
Laag compatibiliteitsniveau Upgrade CompatibilityLevel in bestand JobConfig.json .
De uitvoerpartitiesleutel is niet gevonden U moet de opgegeven partitiesleutel gebruiken voor de uitvoer.
Aangepaste partitie wordt niet ondersteund U kunt alleen vooraf gedefinieerde partitiesleutels gebruiken.
Querystap maakt geen gebruik van partitie Uw query maakt geen gebruik van een PARTITION BY-component.

Volgende stappen

Als u meer wilt weten over parallelle uitvoering van query's en taakdiagrammen, bekijkt u deze zelfstudies: