Verteilungsratgeber (Distribution Advisor) in Azure Synapse SQL
Gilt für: Dedizierte SQL-Pools (früher SQL DW) in Azure Synapse Analytics
In Azure Synapse SQL wird jede Tabelle anhand der vom Kunden ausgewählten Strategie (Roundrobin, Hashverteilung, Replikation) verteilt. Die ausgewählte Verteilungsstrategie kann sich erheblich auf die Abfrageleistung auswirken.
Der Verteilungsratgeber (Distribution Advisor, DA) von Azure Synapse SQL analysiert Kundenabfragen und empfiehlt die besten Verteilungsstrategien für Tabellen, um die Abfrageleistung zu verbessern. Die vom Ratgeber zu berücksichtigenden Abfragen können vom Kunden bereitgestellt oder aus den in der dynamischen Verwaltungssicht (Dynamic Management View, DMV) verfügbaren Verlaufsabfragen abgerufen werden.
Hinweis
Der Verteilungsratgeber befindet sich derzeit in der Vorschauphase für Azure Synapse Analytics. Previewfunktionen sind nur zum Testen gedacht und sollten nicht für Produktionsinstanzen oder -daten verwendet werden. Als Previewfunktion unterliegt der Verteilungsratgeber Änderungen des Verhaltens oder der Funktionalität. Bewahren Sie außerdem eine Kopie Ihrer Testdaten auf, wenn die Daten wichtig sind. Der Verteilungsratgeber unterstützt keine verteilten mehrspaltigen Tabellen.
Voraussetzungen
Führen Sie die T-SQL-Anweisung
SELECT @@version
aus, um sicherzustellen, dass Version 10.0.15669 oder eine höhere Version des dedizierten SQL-Pools in Azure Synapse Analytics vorliegt. Wenn Ihre Version niedriger ist, sollten Ihre bereitgestellten dedizierten SQL-Pools während des Wartungszyklus automatisch eine neue Version erhalten.Stellen Sie sicher, dass die Statistiken verfügbar und aktuell sind, bevor Sie den Ratgeber ausführen. Ausführlichere Informationen zu Statistiken finden Sie in den Artikeln Verwalten von Tabellenstatistiken, CREATE STATISTICS und UPDATE STATISTICS.
Aktivieren Sie den Azure Synapse Verteilungsratgeber für die aktuelle Sitzung mit dem T-SQL-Befehl EMPFEHLUNGEN FESTLEGEN.
Analysieren der Workload und Generieren von Verteilungsempfehlungen
Im folgenden Tutorial finden Sie einen Beispielanwendungsfall für die Verwendung des Verteilungsratgebers, um Kundenabfragen zu analysieren und die besten Verteilungsstrategien zu empfehlen.
Der Verteilungsratgeber analysiert nur Abfragen, die für Benutzertabellen ausgeführt werden.
1. Erstellen von gespeicherten Prozeduren für den Verteilungsratgeber
Erstellen Sie zwei neue gespeicherte Prozeduren in der Datenbank, um eine einfache Ausführung des Ratgebers zu ermöglichen. Führen Sie die auf GitHub als Download verfügbare Skriptdtei „CreateDistributionAdvisor_PublicPreview.sql“ aus:
Befehl | Beschreibung |
---|---|
dbo.write_dist_recommendation |
Definiert Abfragen, die der DA analysieren soll. Sie können Abfragen manuell bereitstellen oder bis zu 100 bisherige Abfragen aus den aktuellen Workloads in sys.dm_pdw_exec_requests lesen. |
dbo.read_dist_recommendation |
Führt den Ratgeber aus und generiert Empfehlungen. |
Ein Beispiel für die Ausführung des Ratgebers finden Sie hier.
2a. Ausführen des Ratgebers für die bisherige Workload in der DMV
Führen Sie die folgenden Befehle aus, um bis zu 100 der letzten Abfragen in der Workload für Analyse- und Verteilungsempfehlungen zu lesen:
EXEC dbo.write_dist_recommendation <Number of Queries max 100>, NULL
go
EXEC dbo.read_dist_recommendation;
go
Wenn Sie sehen möchten, welche Abfragen vom DA analysiert wurden, führen Sie die auf GitHub als Download verfügbare Skriptdtei „e2e_queries_used_for_recommendations.sql“ aus.
2b. Ausführen des Ratgebers für ausgewählte Abfragen
Der erste Parameter dbo.write_dist_recommendation
sollte auf 0
festgelegt werden. Der zweite Parameter ist eine durch Semikolons getrennte Liste von bis zu 100 Abfragen, die der DA analysiert. Im folgenden Beispiel möchten wir die Verteilungsempfehlung für zwei durch Semikolons getrennte Anweisungen (select count (*) from t1;
und select * from t1 join t2 on t1.a1 = t2.a1;
) anzeigen.
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. Anzeigen von Empfehlungen
Die gespeicherte Systemprozedur dbo.read_dist_recommendation
gibt Empfehlungen im folgenden Format zurück, wenn die Ausführung abgeschlossen ist:
Spaltenname | Beschreibung |
---|---|
Table_name | Die vom DA analysierte Tabelle. Eine Zeile pro Tabelle, unabhängig von der empfohlenen Änderung. |
Current_Distribution | Die aktuelle Verteilungsstrategie für die Tabelle. |
Recommended_Distribution | Die empfohlene Verteilung. Diese kann mit Current_Distribution identisch sein, wenn keine Änderung empfohlen wird. |
Distribution_Change_Command | Ein CTAS T-SQL-Befehl zum Implementieren der Empfehlung. |
4. Implementieren der Empfehlung
- Führen Sie den vom Verteilungsratgeber angegebenen CTAS-Befehl aus, um neue Tabellen mit der empfohlenen Verteilungsstrategie zu erstellen.
- Ändern Sie die Abfragen, die für neue Tabellen ausgeführt werden sollen.
- Führen Sie Abfragen für alte und neue Tabellen aus, um die Leistungsverbesserungen zu vergleichen.
Hinweis
Um uns bei der Verbesserung des Verteilungsberaters zu helfen, nehmen Sie an dieser kurzen Umfrage teil.
Problembehandlung
Dieser Abschnitt enthält allgemeine Problembehandlungsszenarien und häufige Fehler, die auftreten können.
1. Veralteter Zustand aus einer früheren Ausführung des Ratgebers
1a. Symptom:
Beim Ausführen des Ratgebers wird die folgende Fehlermeldung angezeigt:
Msg 110813, Level 16, State 1, Line 1
Calling GetLastScalarResult() before executing scalar subquery.
1b. Lösung:
- Stellen Sie sicher, dass Sie einfache Anführungszeichen verwenden, um den Ratgeber für ausgewählte Abfragen auszuführen.
- Starten Sie eine neue Sitzung in SSMS, und führen Sie den Ratgeber aus.
2. Fehler beim Ausführen des Ratgebers
2a. Symptom:
Im Bereich „Results“ (Ergebnisse) wird unten CommandToInvokeAdvisorString
angezeigt, aber nicht die RecommendationOutput
darunter.
Beispielsweise wird nur das Resultset Command_to_Invoke_Distribution_Advisor
angezeigt.
Das zweite Resultset, das die T-SQL-Befehle für die Tabellenänderung enthält, wird jedoch nicht angezeigt:
2b. Lösung:
Überprüfen Sie die obige Ausgabe von
CommandToInvokeAdvisorString
.Entfernen Sie Abfragen, die möglicherweise nicht mehr gültig sind und die hier entweder aus den manuell ausgewählten Abfragen oder aus der DMV hinzugefügt wurden, indem Sie die
WHERE
-Klausel im Skript (siehe Vom DA berücksichtigte Abfragen) bearbeiten.
3. Fehler bei der Nachbearbeitung der Empfehlungsausgabe
3a. Symptom:
Die folgende Fehlermeldung wird angezeigt.
Invalid length parameter passed to the LEFT or SUBSTRING function.
3b. Lösung:
Stellen Sie sicher, dass Sie über die neueste Version der gespeicherten Prozedur von GitHub verfügen:
Die auf GitHub als Download verfügbare Skriptdtei „e2e_queries_used_for_recommendations.sql“
Die auf GitHub als Download verfügbare Skriptdtei „CreateDistributionAdvisor_PublicPreview.sql“
Feedback der Azure Synapse-Produktgruppe
Um uns bei der Verbesserung des Verteilungsberaters zu helfen, nehmen Sie an dieser kurzen Umfrage teil.
Wenn Sie Informationen benötigen, die in diesem Artikel nicht enthalten sind, können Sie auf der Frageseite von Microsoft Q&A (Fragen und Antworten) für Azure Synapse Fragen an andere Benutzer und die Produktgruppe „Azure Synapse Analytics“ stellen.
Wir überwachen dieses Forum aktiv, um sicherzustellen, dass Ihre Frage entweder von einem anderen Benutzer oder einem Mitarbeiter beantwortet wird. Falls Sie Ihre Fragen lieber über Stack Overflow stellen möchten, können Sie dazu auch das Stack Overflow-Forum für Azure Synapse Analytics nutzen.
Möglichkeiten zu Funktionsanfragen finden Sie auf der Azure Synapse Analytics-Feedbackseite. Das Hinzufügen Ihrer Anforderungen oder das Stimmen für andere Anforderungen hilft uns, uns auf die am meisten nachgefragten Features zu konzentrieren.
Nächste Schritte
- EMPFEHLUNGEN FESTLEGEN (Transact-SQL)
- Laden von Daten in einen dedizierten SQL-Pool
- Strategien zum Laden von Daten für einen dedizierten SQL-Pool in Azure Synapse Analytics
- Architektur des dedizierten SQL-Pools (früher SQL DW) in Azure Synapse Analytics
- Cheatsheet für dedizierte SQL-Pools (ehemals SQL DW) in Azure Synapse Analytics