Delen via


Distribution Advisor in Azure Synapse SQL

Van toepassing op: toegewezen SQL-pools van Azure Synapse Analytics (voorheen SQL DW)

In Azure Synapse SQL wordt elke tabel gedistribueerd met behulp van de strategie die is gekozen door de klant (Round Robin, Hash Distributed, Replicated). De gekozen distributiestrategie kan de prestaties van query's aanzienlijk beïnvloeden.

De functie Distribution Advisor (DA) van Azure Synapse SQL analyseert klantquery's en adviseert de beste distributiestrategieën voor tabellen om de queryprestaties te verbeteren. Query's die door de adviseur moeten worden overwogen, kunnen worden verstrekt door de klant of worden opgehaald uit historische query's die beschikbaar zijn in DMV.

Notitie

Distribution Advisor is momenteel in preview voor Azure Synapse Analytics. Preview-functies zijn alleen bedoeld voor testen en mogen niet worden gebruikt voor productie-exemplaren of productiegegevens. Als preview-functie is Distribution Advisor onderhevig aan wijzigingen in gedrag of functionaliteit. Bewaar ook een kopie van uw testgegevens als de gegevens belangrijk zijn. Distribution Advisor biedt geen ondersteuning voor gedistribueerde tabellen met meerdere kolommen.

Vereisten

  • Voer de T-SQL-instructie SELECT @@version uit om ervoor te zorgen dat uw toegewezen SQL-pool van Azure Synapse Analytics versie 10.0.15669 of hoger is. Als uw versie lager is, moet een nieuwe versie automatisch uw ingerichte toegewezen SQL-pools bereiken tijdens de onderhoudscyclus.

  • Zorg ervoor dat statistieken beschikbaar en up-to-date zijn voordat u de advisor uitvoert. Voor meer informatie kunt u tabelstatistieken beheren, CREATE STATISTICS en UPDATE STATISTICS-artikelen voor meer informatie over statistieken.

  • Schakel de Azure Synapse-distributieadviseur in voor de huidige sessie met de T-SQL-opdracht SET RECOMMENDATIONS .

Werkbelasting analyseren en distributieaan aanbevelingen genereren

In de volgende zelfstudie wordt het voorbeeldgebruik uitgelegd voor het gebruik van de functie Distribution Advisor om klantquery's te analyseren en de beste distributiestrategieën aan te bevelen.

Distribution Advisor analyseert alleen query's die worden uitgevoerd op gebruikerstabellen.

1. Opgeslagen procedures voor Distribution Advisor maken

Als u de advisor eenvoudig wilt uitvoeren, maakt u twee nieuwe opgeslagen procedures in de database. Voer het CreateDistributionAdvisor_PublicPreview script uit dat kan worden gedownload vanuit GitHub:

Opdracht Beschrijving
dbo.write_dist_recommendation Definieert query's waarop DA wordt geanalyseerd. U kunt query's handmatig opgeven of van maximaal 100 eerdere query's lezen uit de werkelijke workloads in sys.dm_pdw_exec_requests.
dbo.read_dist_recommendation Voert de advisor uit en genereert aanbevelingen.

Hier volgt een voorbeeld van hoe u de advisor kunt uitvoeren.

2a. De advisor uitvoeren op eerdere workload in DMV

Voer de volgende opdrachten uit om de laatste 100 query's in de workload te lezen voor aanbevelingen voor analyse en distributie:

EXEC dbo.write_dist_recommendation <Number of Queries max 100>, NULL
go
EXEC dbo.read_dist_recommendation;
go

Als u wilt zien welke query's zijn geanalyseerd door DA, voert u het e2e_queries_used_for_recommendations.sql-script uit dat kan worden gedownload vanuit GitHub.

2b. De advisor uitvoeren op geselecteerde query's

De eerste parameter moet dbo.write_dist_recommendation worden ingesteld op 0en de tweede parameter is een door puntkomma's gescheiden lijst met maximaal 100 query's die door DA worden geanalyseerd. In het onderstaande voorbeeld willen we de distributieaanveling voor twee instructies zien, gescheiden door puntkomma's en select count (*) from t1; select * from t1 join t2 on t1.a1 = t2.a1;.

EXEC dbo.write_dist_recommendation 0, 'select count (*) from t1; select * from t1 join t2 on t1.a1 = t2.a1;'
go
EXEC dbo.read_dist_recommendation;
go

3. Aanbevelingen weergeven

De dbo.read_dist_recommendation opgeslagen systeemprocedure retourneert aanbevelingen in de volgende indeling wanneer de uitvoering is voltooid:

Kolomnaam Beschrijving
Table_name De tabel die DA heeft geanalyseerd. Eén regel per tabel, ongeacht de wijziging in aanbeveling.
Current_Distribution Huidige strategie voor tabeldistributie.
Recommended_Distribution Aanbevolen distributie. Dit kan hetzelfde zijn als Current_Distribution als er geen wijziging wordt aanbevolen.
Distribution_Change_Command Een CTAS T-SQL-opdracht om de aanbeveling te implementeren.

4. Het advies implementeren

  • Voer de CTAS-opdracht van Distribution Advisor uit om nieuwe tabellen te maken met de aanbevolen distributiestrategie.
  • Wijzig query's om uit te voeren op nieuwe tabellen.
  • Voer query's uit op oude en nieuwe tabellen om te vergelijken voor prestatieverbeteringen.

Notitie

Vul deze snelle enquête in om ons te helpen Distribution Advisor te verbeteren.

Problemen oplossen

Deze sectie bevat veelvoorkomende scenario's voor probleemoplossing en veelvoorkomende fouten die u kunt tegenkomen.

1. Verouderde status van een eerdere uitvoering van de advisor

1a. Symptoom:

U ziet dit foutbericht bij het uitvoeren van de advisor:

Msg 110813, Level 16, State 1, Line 1
Calling GetLastScalarResult() before executing scalar subquery.
1b. Oplossing:
  • Controleer of u enkele aanhalingstekens gebruikt om de advisor uit te voeren voor selectiequery's.
  • Start een nieuwe sessie in SSMS en voer de advisor uit.

2. Fouten tijdens het uitvoeren van de advisor

2a. Symptoom:

Het deelvenster Resultaat wordt hieronder weergegeven CommandToInvokeAdvisorString , maar wordt niet hieronder RecommendationOutput weergegeven.

U ziet bijvoorbeeld alleen de Command_to_Invoke_Distribution_Advisor resultatenset.

Screenshot of the output of a T-SQL result showing the Command_to_Invoke_Distribution_Advisor.

Maar niet de tweede resultatenset met de T-SQL-opdrachten voor tabelwijziging:

Screenshot of the output of a T-SQL result showing the Command_to_Invoke_Distribution_Advisor with a second resultset containing table change T-SQL commands.

2b. Oplossing:
  • Controleer de bovenstaande uitvoer CommandToInvokeAdvisorString .

  • Verwijder query's die mogelijk niet meer geldig zijn die hier mogelijk zijn toegevoegd uit de hand geselecteerde query's of uit de DMV door een bewerkingscomponent WHERE in: Query's die door DA worden overwogen.

3. Fout tijdens naverwerking van aanbevelingsuitvoer

3a. Symptoom:

U ziet het volgende foutbericht.

Invalid length parameter passed to the LEFT or SUBSTRING function.
3b. Oplossing:

Zorg ervoor dat u de meest recente versie van de opgeslagen procedure van GitHub hebt:

Feedback van Azure Synapse-productgroepen

Vul deze snelle enquête in om ons te helpen Distribution Advisor te verbeteren.

Als u informatie nodig hebt die niet is opgegeven in dit artikel, kunt u op de microsoft Q&A-vragenpagina zoeken naar Azure Synapse om vragen te stellen aan andere gebruikers en aan de Azure Synapse Analytics-productgroep.

We controleren het forum regelmatig om er zeker van te zijn dat uw vragen worden beantwoord door een andere gebruiker of een van ons. Als u liever uw vragen over Stack Overflow stelt, hebben we ook een Azure Synapse Analytics Stack Overflow-forum.

Gebruik de feedbackpagina van Azure Synapse Analytics voor functieaanvragen. Door uw aanvragen toe te voegen of andere aanvragen up-voting toe te voegen, kunnen we ons richten op de meest in-demand functies.

Volgende stappen