Verteilungsratgeber (Distribution Advisor) in Azure Synapse SQL
Artikel
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.
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
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
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:
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.
Verwalten einer SQL Server-Datenbankinfrastruktur für Cloud-, lokale und hybride relationale Datenbanken auf Grundlage der Microsoft PaaS-Angebote für relationale Datenbanken.