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.

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

Das zweite Resultset, das die T-SQL-Befehle für die Tabellenänderung enthält, wird jedoch nicht angezeigt:

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ö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:

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