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
.
Men inte den andra resultatuppsättningen som innehåller tabellen ändrar T-SQL-kommandon:
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:
e2e_queries_used_for_recommendations.sql-skript som är tillgängligt för nedladdning från GitHub
CreateDistributionAdvisor_PublicPreview.sql-skript tillgängligt för nedladdning 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
- ANGE REKOMMENDATIONER (Transact-SQL)
- Läsa in data till en dedikerad SQL-pool
- Strategier för datainläsning för dedikerad SQL-pool i Azure Synapse Analytics.
- Dedikerad SQL-poolarkitektur (tidigare SQL DW) i Azure Synapse Analytics
- Fuskark för dedikerad SQL-pool (tidigare SQL DW) i Azure Synapse Analytics