Dela via


Distribution Advisor i Azure Synapse SQL

Gäller för: Dedikerade SQL-pooler i Azure Synapse Analytics (tidigare SQL DW)

I Azure Synapse SQL distribueras varje tabell med hjälp av den strategi som kunden har valt (Resursallokering, Hash distribuerad, Replikerad). Den valda distributionsstrategin kan påverka frågeprestanda avsevärt.

Funktionen Distribution Advisor (DA) i Azure Synapse SQL analyserar kundfrågor och rekommenderar de bästa distributionsstrategierna för tabeller för att förbättra frågeprestanda. Frågor som ska beaktas av rådgivaren kan tillhandahållas av kunden eller hämtas från historiska frågor som är tillgängliga i DMV.

Kommentar

Distribution Advisor är för närvarande i förhandsversion för Azure Synapse Analytics. Förhandsversionsfunktioner är endast avsedda för testning och bör inte användas på produktionsinstanser eller produktionsdata. Som en förhandsgranskningsfunktion kan Distribution Advisor genomgå ändringar i beteende eller funktionalitet. Behåll också en kopia av dina testdata om data är viktiga. Distribution Advisor stöder inte distribuerade tabeller med flera kolumner.

Förutsättningar

  • Kör T-SQL-instruktionen SELECT @@version för att säkerställa att din dedikerade SQL-pool i Azure Synapse Analytics är version 10.0.15669 eller senare. Om din version är lägre bör en ny version automatiskt nå dina etablerade dedikerade SQL-pooler under underhållscykeln.

  • Se till att statistiken är tillgänglig och uppdaterad innan du kör rådgivaren. Mer information finns i artiklarna Hantera tabellstatistik, SKAPA STATISTIK och UPPDATERA STATISTIK för mer information om statistik.

  • Aktivera Azure Synapse-distributionsrådgivaren för den aktuella sessionen med T-SQL-kommandot SET RECOMMENDATIONS .

Analysera arbetsbelastning och generera distributionsrekommendationer

I följande självstudie förklaras exempelanvändningsfallet för att använda funktionen Distribution Advisor för att analysera kundfrågor och rekommendera de bästa distributionsstrategierna.

Distribution Advisor analyserar endast frågor som körs i användartabeller.

1. Skapa lagrade procedurer för Distribution Advisor

Om du enkelt vill köra rådgivaren skapar du två nya lagrade procedurer i databasen. Kör det CreateDistributionAdvisor_PublicPreview skript som är tillgängligt för nedladdning från GitHub:

Kommando beskrivning
dbo.write_dist_recommendation Definierar frågor som DA ska analysera på. Du kan ange frågor manuellt eller läsa från upp till 100 tidigare frågor från de faktiska arbetsbelastningarna i sys.dm_pdw_exec_requests.
dbo.read_dist_recommendation Kör rådgivaren och genererar rekommendationer.

Här är ett exempel på hur du kan köra rådgivaren.

2a. Kör rådgivaren för tidigare arbetsbelastning i DMV

Kör följande kommandon för att läsa upp till de senaste 100 frågorna i arbetsbelastningen för analys- och distributionsrekommendationer:

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

Om du vill se vilka frågor som har analyserats av DA kör du skriptet e2e_queries_used_for_recommendations.sql som är tillgängligt för nedladdning från GitHub.

2b. Kör rådgivaren på valda frågor

Den första parametern i dbo.write_dist_recommendation ska anges till 0, och den andra parametern är en semikolonavgränsad lista med upp till 100 frågor som DA ska analysera. I exemplet nedan vill vi se distributionsrekommendationsen för två instruktioner avgränsade med semikolon select count (*) from t1; och 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. Visa rekommendationer

Den dbo.read_dist_recommendation system lagrade proceduren returnerar rekommendationer i följande format när körningen är klar:

Kolumnnamn Beskrivning
Table_name Tabellen som DA analyserade. En rad per tabell oavsett ändring i rekommendationen.
Current_Distribution Aktuell strategi för tabelldistribution.
Recommended_Distribution Rekommenderad distribution. Detta kan vara detsamma som Current_Distribution om ingen ändring rekommenderas.
Distribution_Change_Command Ett CTAS T-SQL-kommando för att implementera rekommendationen.

4. Genomföra råden

  • Kör CTAS-kommandot som tillhandahålls av Distribution Advisor för att skapa nya tabeller med den rekommenderade distributionsstrategin.
  • Ändra frågor så att de körs på nya tabeller.
  • Kör frågor på gamla och nya tabeller för att jämföra prestandaförbättringar.

Kommentar

Fyll i den här snabbundersökningen för att hjälpa oss att förbättra Distribution Advisor.

Felsökning

Det här avsnittet innehåller vanliga felsökningsscenarier och vanliga misstag som du kan stöta på.

1. Inaktuellt tillstånd från en tidigare körning av rådgivaren

1a. Symptom:

Du ser det här felmeddelandet när du kör rådgivaren:

Msg 110813, Level 16, State 1, Line 1
Calling GetLastScalarResult() before executing scalar subquery.
1b. Lösningar:
  • Kontrollera att du använder enkla citattecken för att köra rådgivaren på utvalda frågor.
  • Starta en ny session i SSMS och kör rådgivaren.

2. Fel vid körning av rådgivaren

2a. Symptom:

Fönstret "resultat" visas CommandToInvokeAdvisorString nedan men visar RecommendationOutput inte nedanstående.

Du ser till exempel bara resultatuppsättningen Command_to_Invoke_Distribution_Advisor .

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

Men inte den andra resultatuppsättningen som innehåller tabellen ändrar T-SQL-kommandon:

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. Lösningar:
  • Kontrollera utdata CommandToInvokeAdvisorString från ovan.

  • Ta bort frågor som kanske inte längre är giltiga som kan ha lagts till här från antingen de handvalda frågorna eller från DMV genom redigeringssatsen WHERE i: Frågor som beaktas av DA.

3. Fel vid efterbearbetning av rekommendationsutdata

3a. Symptom:

Följande felmeddelande visas.

Invalid length parameter passed to the LEFT or SUBSTRING function.
3b. Lösningar:

Se till att du har den senaste versionen av den lagrade proceduren från GitHub:

Feedback om Azure Synapse-produktgrupper

Fyll i den här snabbundersökningen för att hjälpa oss att förbättra Distribution Advisor.

Om du behöver information som inte anges i den här artikeln kan du söka på microsofts Q&A-frågesida efter Azure Synapse där du kan ställa frågor till andra användare och till Produktgruppen för Azure Synapse Analytics.

Vi övervakar aktivt detta forum för att kontrollera att dina frågor besvaras antingen av en annan användare eller av någon av oss. Om du föredrar att ställa dina frågor om Stack Overflow har vi även ett Azure Synapse Analytics Stack Overflow-forum.

För funktionsbegäranden använder du sidan Feedback om Azure Synapse Analytics. Genom att lägga till dina begäranden eller rösta upp andra begäranden kan vi fokusera på de mest efterfrågade funktionerna.

Nästa steg