Freigeben über


Verteilungsratgeber 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 mithilfe der vom Kunden gewählten Strategie (Round Robin, Hash Distributed, Repliziert) verteilt. Die ausgewählte Verteilungsstrategie kann sich erheblich auf die Abfrageleistung auswirken.

Das Feature Distribution Advisor (DA) von Azure Synapse SQL analysiert Kundenabfragen und empfiehlt die besten Verteilungsstrategien für Tabellen, um die Abfrageleistung zu verbessern. Abfragen, die vom Ratgeber berücksichtigt werden, können vom Kunden bereitgestellt oder aus historischen Abfragen abgerufen werden, die in DMV verfügbar sind.

Hinweis

"Distribution Advisor ist derzeit in der Vorschau für Azure Synapse Analytics verfügbar." Vorschaufeatures sind nur für Tests vorgesehen und sollten nicht für Produktionsinstanzen oder Produktionsdaten verwendet werden. Als Vorschaufeature unterliegt der Verteilungsratgeber Änderungen des Verhaltens oder der Funktionalität. Bitte behalten Sie auch eine Kopie Ihrer Testdaten bei, wenn die Daten wichtig sind. Distribution Advisor unterstützt keine mehrspaltigen verteilten Tabellen.

Voraussetzungen

  • Führen Sie die T-SQL-Anweisung SELECT @@version aus, um sicherzustellen, dass Ihr dedizierter SQL-Pool von Azure Synapse Analytics Version 10.0.15669 oder höher ist. Wenn Ihre Version niedriger ist, sollte eine neue Version automatisch während des Wartungszyklus Ihre bereitgestellten dedizierten SQL-Pools erreichen.

  • Stellen Sie sicher, dass Statistiken verfügbar und aktuell sind, bevor Sie den Assistenten ausführen. Weitere Details erhalten Sie in den Artikeln " Tabellenstatistiken verwalten", " STATISTIKEN ERSTELLEN" und " STATISTIK AKTUALISIEREN" , um weitere Details zu Statistiken zu erhalten.

  • Aktivieren Sie den Azure Synapse-Berater für die aktuelle Sitzung mit dem T-SQL-Befehl SET RECOMMENDATIONS.

Analysieren der Arbeitsauslastung und Generieren von Verteilungsempfehlungen

Im folgenden Lernprogramm wird der Beispielanwendungsfall für die Verwendung des Verteilungsratgeberfeatures erläutert, um Kundenabfragen zu analysieren und die besten Verteilungsstrategien zu empfehlen.

Der Verteilungsratgeber analysiert nur Abfragen, die in Benutzertabellen ausgeführt werden.

1. Erstellen von gespeicherten Prozeduren des Verteilerberaters

Um den Ratgeber einfach auszuführen, erstellen Sie zwei neue gespeicherte Prozeduren in der Datenbank. Führen Sie das CreateDistributionAdvisor_PublicPreview Skript aus, das von GitHub heruntergeladen werden kann:

Befehl Beschreibung
dbo.write_dist_recommendation Definiert Abfragen, die DA analysieren wird. Sie können Abfragen manuell bereitstellen oder aus bis zu 100 vergangenen Abfragen aus den tatsächlichen Workloads in sys.dm_pdw_exec_requests lesen.
dbo.read_dist_recommendation Führt den Ratgeber aus und generiert Empfehlungen.

Hier ist ein Beispiel dafür, wie Sie den Ratgeber ausführen können.

2a. Führen Sie den Berater auf vergangener Arbeitslast in DMV aus

Führen Sie die folgenden Befehle aus, um bis zu die letzten 100 Abfragen in der Auftragslast zu lesen, um Analysen und Empfehlungen zur Auftragsverteilung vorzunehmen.

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

Um zu sehen, welche Abfragen von DA analysiert wurden, führen Sie das e2e_queries_used_for_recommendations.sql Skript aus, das für den Download von GitHub verfügbar ist.

2b. Führen Sie den Advisor für ausgewählte Abfragen aus

Der erste Parameter in dbo.write_dist_recommendation sollte auf 0 eingestellt werden, und der zweite Parameter ist eine durch Semikolon getrennte Liste von bis zu 100 Abfragen, die DA analysieren wird. Im folgenden Beispiel möchten wir die Verteilungsempfehlung für zwei Anweisungen sehen, die durch Semikolons getrennt sind: select count (*) from t1; und 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. Empfehlungen anzeigen

Die dbo.read_dist_recommendation gespeicherte Systemprozedur gibt Empfehlungen im folgenden Format zurück, wenn die Ausführung abgeschlossen ist:

Spaltenname Beschreibung
Table_name Die Tabelle, die DA analysiert hat. Eine Zeile pro Tabelle, unabhängig von änderung der Empfehlung.
Stromverteilung Aktuelle Tabellenverteilungsstrategie.
Empfohlene_Verteilung Empfohlene Verteilung. Dies kann identisch sein, als Current_Distribution ob keine Änderung empfohlen wird.
Distribution_Change_Command Ein CTAS T-SQL-Befehl zum Implementieren der Empfehlung.

4. Implementierung der Beratung

  • Führen Sie den vom Verteilungsratgeber bereitgestellten CTAS-Befehl aus, um neue Tabellen mit der empfohlenen Verteilungsstrategie zu erstellen.
  • Ändern Sie Abfragen, die für neue Tabellen ausgeführt werden sollen.
  • Führen Sie Abfragen für alte und neue Tabellen aus, um leistungsverbesserungen zu vergleichen.

Hinweis

Um uns bei der Verbesserung des Distribution Advisor zu helfen, füllen Sie bitte diese kurze Umfrage aus.

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 Beratungsprogramms

1a. Symptom:

Beim Ausführen des Programmassistenten wird folgende Fehlermeldung angezeigt:

Msg 110813, Level 16, State 1, Line 1
Calling GetLastScalarResult() before executing scalar subquery.
1b. Milderung:
  • Stellen Sie sicher, dass Sie einzelne Anführungszeichen "" verwenden, um den Ratgeber bei Auswahlabfragen auszuführen.
  • Starten Sie eine neue Sitzung in SSMS, und führen Sie den Ratgeber aus.

2. Fehler beim Ausführen des Assistenten

2a. Symptom:

Der Bereich "Ergebnis" zeigt CommandToInvokeAdvisorString unten an, aber RecommendationOutput nicht.

Beispielsweise wird nur das Command_to_Invoke_Distribution_Advisor Resultset angezeigt.

Screenshot der Ausgabe eines T-SQL-Ergebnisses mit dem Befehl „Command_to_Invoke_Distribution_Advisor“.

Aber nicht das zweite Resultset mit den T-SQL-Befehlen zur Änderung der Tabelle:

Screenshot der Ausgabe eines T-SQL-Ergebnisses, das den Command_to_Invoke_Distribution_Advisor zeigt, mit einem zweiten Resultset, das T-SQL-Befehle zur Tabellenänderung enthält.

2b. Milderung:
  • Bitte überprüfen Sie die Ausgabe von CommandToInvokeAdvisorString oben.

  • Entfernen Sie Abfragen, die möglicherweise nicht mehr gültig sind und die entweder von den handverlesenen Abfragen oder von der DMV hier hinzugefügt wurden, durch Bearbeiten der WHERE-Klausel in: Abfragen, die von DA berücksichtigt werden.

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. Milderung:

Stellen Sie sicher, dass Sie über die aktuellste Version der gespeicherten Prozedur von GitHub verfügen:

Feedback zur Azure Synapse-Produktgruppe

Um uns bei der Verbesserung des Distribution Advisor zu helfen, füllen Sie bitte diese kurze Umfrage aus.

Wenn Sie informationen benötigen, die in diesem Artikel nicht angegeben sind, ist die Microsoft Q&A-Frageseite nach Azure Synapse ein Ort, an dem Sie Fragen an andere Benutzer und die Azure Synapse Analytics-Produktgruppe stellen können.

Wir überwachen dieses Forum aktiv, um sicherzustellen, dass Ihre Fragen entweder von einem anderen Benutzer oder einem von uns beantwortet werden. Wenn Sie Ihre Fragen auf Stack Overflow stellen möchten, haben wir auch ein Azure Synapse Analytics Stack Overflow Forum.

Verwenden Sie für Featureanforderungen die Azure Synapse Analytics-Feedbackseite . Wenn Sie Ihre Anforderungen hinzufügen oder andere Anforderungen aktualisieren, können wir uns auf die gefragtesten Features konzentrieren.

Nächste Schritte