Lassen Sie uns darüber sprechen, wie GaussDB AP SQL ausführt

Dieser Artikel wurde von der Huawei Cloud Community „ Wie führt GaussDB AP SQL aus? “ geteilt, Autor: yd_270088468.

Vorwort

Stellen Sie vor, wie die verschiedenen Komponenten von GaussDB AP zusammenarbeiten, und konzentrieren Sie sich dabei auf die SQL-Engine.

1. SQL-Engine-Komponenten und SQL-Lebenszyklus

cke_131.png

Parser: Lexikalisches/grammatisches Analysemodul. Bei der lexikalischen Analyse wird jedes Wort aus der SQL-Zeichenfolge als Eingabe für die Syntaxanalyse analysiert. Die Syntaxanalyse kann man sich als „regulären Ausdruck“ vorstellen, sie ist jedoch weitaus komplexer als ein regulärer Ausdruck. Sie definiert die Syntaxregeln aller SQL-Typen sowie die Rangfolge und Assoziativität von Operatoren. Nach Abschluss der Syntaxanalyse wird ein Analysebaum als Eingabe des semantischen Analysemoduls generiert. Ein SQL lautet beispielsweise SELECT id, data FROM tbl_a WHERE id < 300 ORDER by data;, der durch Syntaxanalyse generierte Parse-Baum lautet wie folgt:

cke_132.png

Analysator: Semantisches Analysemodul. Die semantische Analyse greift auf die Objekte in der Datenbank zu, prüft, ob die Tabelle vorhanden ist, ob die Spalten zulässig sind, und konvertiert Tabellen, Sortierspalten, Projektionsspalten usw. in interne Objekt-IDs. Darüber hinaus wird auch geprüft, ob die SQL-Semantik korrekt und zulässig ist. Beispielsweise ist die Aggregate-Funktion in der where-Klausel unzulässig. Nach der semantischen Analyse wird der Analysebaum als Eingabe des Abfrageumschreibungsmoduls in einen Abfragebaum umgewandelt. Die Struktur von Query Tree ähnelt in gewisser Weise der von Parse Tree, ist jedoch inhaltsreicher, einschließlich der Speicherung von Objektinformationen in der Datenbank durch Query Tree und dem Hinzufügen einiger weiterer Flag-Tags. Der durch semantische Analyse generierte Abfragebaum sieht wie folgt aus:

cke_133.png

Rewriter: Modul zum Umschreiben von Abfragen. Das Modul zum Umschreiben von Abfragen schreibt die Abfrage gemäß benutzerdefinierten Regeln neu, wodurch die Mitglieder im Abfragebaum tatsächlich geändert oder ersetzt werden. Der Rewrite-Prozess läuft wie folgt ab:

cke_134.png

Planner: Optimierermodul. Die Eingabe des Optimierers ist der Abfragebaum, und der Ausgabeplanbaum wird verwendet, um die Ausführung des Executors zu leiten, z. B. wie man beitritt, wie man Daten scannt, wie man sortiert usw.

cke_135.png

Executor: Executor-Modul. Initialisierung und Ausführung werden basierend auf der Planbaumausgabe des Optimierers durchgeführt. Während der Ausführung wird die Speicher-Engine-Schnittstelle aufgerufen und hier wird keine Erweiterung durchgeführt.

2. Gesamtarchitektur der SQL-Ausführung

cke_136.png

Schritt 1: Das Unternehmen sendet SQL über ELB an CN, und das SQL kann DDL, DML oder DCL sein.

Schritt 2: CN beurteilt den SQL-Typ. Wenn der SQL-Typ DDL/DCL ist, muss kein Plan generiert werden, sondern das SQL wird an andere CNs und alle DNs gesendet und auf allen CNs/DNs ausgeführt. Wenn der SQL-Typ DML ist, wird das SQL für diejenigen, die den Stream-Operator nicht verwenden müssen (kann in drei Unterkategorien unterteilt werden), direkt zur Ausführung an jeden DN gesendet. Für diejenigen, die den Stream-Operator verwenden müssen, a Der Plan wird generiert und zur Ausführung an den DN gesendet.

Schritt 3: Wenn DN DML ausführt, kann es Daten von anderen DNs abrufen. DWS bietet drei Stream-Operatoren (Redistribute/Broadcast/Gather), um den Datenfluss zwischen DN-Knoten zu reduzieren.

Schritt 4: DN gibt die Ergebnismenge zur Zusammenfassung an CN zurück.

Schritt 5: CN gibt die aggregierten Ergebnisse an das Unternehmen zurück.

3. Wie DDL in CN/DN interagiert

3.1 Der Fall einer einzelnen DDL

cke_137.png

3.2 Der Fall der gleichzeitigen DDL

Um einen durch gleichzeitiges DDL verursachten Deadlock zu vermeiden, ist „enable_parallel_ddl“ standardmäßig aktiviert und steuert das von allen CNs ausgegebene DDL so, dass dasselbe CN als Ausgangspunkt für die Ausführung verwendet wird.

cke_138.png

Beschreibung des Nachrichtensequenzdiagramms

Voraussetzung: CN 1, CN 2 und CN 3 erhalten jeweils eine Anfrage für eine DDL-Operation beim Tabellentest. CN 1 ist der erste Knoten, der für die Ausführung von DDL ausgewählt wurde.

T1: CN 2 ist nicht der erste Knoten, der die DDL-Operation ausführt, daher sendet CN 2 den Befehl 2 zur Ausführung an den ersten Knoten CN 1 und wartet dann auf die Antwort von CN 1;

T2: CN 3 ist nicht der erste Knoten, der die DDL-Operation ausführt, daher sendet CN 3 den Befehl 3 zur Ausführung an den ersten Knoten CN 1 und wartet dann auf die Antwort von CN1;

T3: CN 1 ist der erste Knoten, der DDL-Vorgänge ausführt, daher wird er gemäß der ursprünglichen Logik der Basislinie ausgeführt, dh zuerst lokal ausgeführt;

T4: CN 1 führt Befehl 2 aus und erhält die Sperre für den Tabellentest. Nachdem die Ausführung von Befehl 2 abgeschlossen ist, informiert CN 1 CN2: Befehl 2 wurde über mir abgeschlossen. Zu diesem Zeitpunkt können Befehl 1 und Befehl 3 die Sperre nicht erhalten und befinden sich im Wartezustand.

T5: Nachdem CN 1 die Antwort erhalten hat, dass Befehl 2 ausgeführt wurde, sendet CN 2 Befehl 2 an CN 3 und wartet auf die Antwort von CN 3.

T6: CN 3 führt Befehl 2 aus und antwortet mit dem Ausführungsergebnis an CN 2;

T7: CN 2 sendet Befehl 2 an DN1, DN2 und DN3, fordert sie auf, ihn lokal auszuführen und wartet auf ihre Antworten;

T8: DN1, DN2 und DN3 führen Befehl 2 jeweils lokal aus und antworten auf das Ausführungsergebnis von CN 2;

T9: CN 2 führt Befehl 2 lokal aus und übermittelt ihn nach Erfolg. Zu diesem Zeitpunkt sind alle CNs und DNs im Cluster entsperrt und Befehl 2 wird ausgeführt.

T10: CN 1 führt Befehl 3 aus und erhält die Sperre für den Tabellentest. Nachdem die Ausführung von Befehl 3 abgeschlossen ist, informiert CN 1 CN3: Befehl 3 wurde über mir abgeschlossen. Zu diesem Zeitpunkt kann Befehl 1 die Sperre nicht erhalten und befindet sich im Wartezustand.

T11: Nachdem CN 1 die Antwort von CN 1 erhalten hat, dass Befehl 3 ausgeführt wurde, sendet CN 3 Befehl 3 an CN 2 und wartet auf die Antwort von CN 2.

T12: CN 2 führt Befehl 3 aus und antwortet mit dem Ausführungsergebnis an CN 3;

T13: CN 3 sendet Befehl 3 an DN1, DN2 und DN3 und fordert sie auf, ihn lokal auszuführen und auf ihre Antworten zu warten;

T14: DN1, DN2 und DN3 führen jeweils Befehl 3 lokal aus und antworten mit dem Ausführungsergebnis von CN 3;

T15: CN 3 führt Befehl 3 lokal aus und übermittelt ihn nach Erfolg. Zu diesem Zeitpunkt sind alle CNs und DNs im Cluster entsperrt und Befehl 3 wird ausgeführt.

T16: CN 1 sendet Befehl 1 an CN2 und CN3 und wartet auf deren Antworten;

T17: CN2 und CN3 führen Befehl 1 lokal aus und antworten mit dem Ausführungsergebnis auf CN 1;

T18: CN 1 sendet Befehl 1 an DN1, DN2 und DN3 und fordert sie auf, ihn lokal auszuführen und auf ihre Antworten zu warten;

T19: DN1, DN2 und DN3 führen jeweils Befehl 1 lokal aus und antworten mit dem Ausführungsergebnis von CN 1;

T20: CN 1 führt Befehl 1 lokal aus und übermittelt ihn nach Erfolg. Zu diesem Zeitpunkt sind alle CNs und DNs im Cluster entsperrt und Befehl 3 wird ausgeführt.

Wie aus der obigen Implementierung ersichtlich ist, besteht die zentrale Idee darin, gleichzeitige DDL-Operationen auf mehreren CNs zu serialisieren, dh einen CN anzugeben, der zuerst ausgeführt werden soll, und alle DDL müssen auf diesem CN ausgeführt werden, bevor sie auf anderen CNs ausgeführt werden können .auf dem Knoten ausgeführt. In diesem Fall sind DDL-Vorgänge auf diesem angegebenen CN seriell, und DDL, die die Sperre nicht erhalten können, warten, es tritt jedoch keine Deadlock-Situation mehr auf, in der die Sperre nicht erhalten werden kann.

4. Erstellung eines DML-Ausführungsplans

4.1 CBO-Modell

CBO: Kostenbasierte Optimierung ist auch ein „kostenbasierter Optimierer“. Im Vergleich zu RBO (regelbasierte Optimierung) reagiert CBO sehr empfindlich auf Daten und verfügt über einen flexibleren Ausführungsplan. Wenn sich die Datenmenge ändert, kann CBO dies häufig tun bessere Optimierungsergebnisse generieren. Ausführungsplan.

Der grundlegende Optimierungsprozess von CBO: Die Suchmaschine verwendet Konvertierungsregeln, um eine (logische/physische) Konvertierung des eingegebenen logischen Ausführungsplans durchzuführen und den Suchraum des Ausführungsplans zu erstellen. Anschließend wird das Kostenmodell verwendet, um die Kosten jedes Ausführungsplans im Suchraum zu schätzen, und der physische Ausführungsplan mit den niedrigsten Kosten wird ausgewählt. Der Prozess der Kostenschätzung ist untrennbar mit der Kardinalitätsschätzung verbunden: Er verwendet die statistischen Informationen jeder Tabelle und Spalte, um die Anzahl der Eingabezeilen, die Auswahlrate und andere Informationen jedes Operators zu schätzen, und stellt das Kostenmodell des Operators zur Schätzung der Abfrage bereit Plan. Kosten.

Der DWS-Optimierer ist ein kostenbasierter Optimierer (CBO). Er kann einen Suchraum für jede SQL-Anweisung erstellen und die Ausführung für den Ausführungsmaschinenplan im Suchraum basierend auf Datenstatistiken, Kardinalitätsschätzungen und Operatorkostenmodellen schätzen Erforderliche Kosten (CPU/MEM/IO/NET) und schließlich wird der Ausführungsplan mit den niedrigsten Kosten als spezifische Ausführungsmethode von SQL ausgewählt.

4.2 Suchraum

Verwenden Sie die Methode Cascade (dynamische Programmierung)/GEQO (genetisches Gen), um eine Plansuche durchzuführen. Mit dem Cascade-Algorithmus kann eine genaue Berechnung erreicht werden, die zeitliche Komplexität ist jedoch hoch und er eignet sich für Situationen, in denen nur wenige Tabellenverbindungen vorhanden sind. GEQO ist eine ungenaue Berechnungsmethode und eignet sich für Situationen mit vielen Tabellen.

4.3 Statistiken

Einschließlich der Anzahl der Zeilen der logischen Tabelle, der Anzahl der eindeutigen Werte (NDV) der Spalte, der Nullwertinformationen der Spalte usw.

4.4 Kardinalitätsschätzung

Die Kardinalitätsschätzung schätzt die Anzahl der Zeilen oder die Kardinalität der Zwischenergebnisse jedes Operators, z. B. die Anzahl der Join-Ausgabezeilen, die Anzahl der von Agg generierten Gruppen usw.

4.5 Betreiberkosten

Für Operatoren desselben Typs wird der Verbrauch (die Kosten) für die Implementierung aller Operatoren berechnet und derjenige mit den geringsten Kosten ausgewählt.

Eingabe: die Größe der beiden Tabellen, die Dateneigenschaften der Join-Spalte, die Reihenfolge und die verfügbare Speichergröße work_mem;

Output: Kosten des Bedieners (Dimension der verbrauchten Zeit)

4.6 Verteilte Planung

Seriennummer

Einstufung

Wirkung

Prinzip der Ausführung

Anwendbare Szene

1

CN gab eine Erklärung ab

Generieren Sie einen Plan für eine vollständige Pushdown-Anweisung (FQS-Plan).

Jeder DN generiert einen Ausführungsplan basierend auf der Pushdown-Anweisung und führt ihn aus. Die Ausführungsergebnisse werden im CN zusammengefasst (FQS, Fast Query Shipping).

Während der Ausführung jedes DN gibt es keine Dateninteraktion, wie im Szenario des Basistabellenscans.

2

CN gab eine Erklärung ab

Generieren Sie einen verteilten Plan zum Senden von Kontoauszügen (partieller Pushdown-Plan)

CN verschiebt einen Teil der ursprünglichen Anweisung (normalerweise einen Basistabellen-Scan) an den DN. Jeder DN generiert einen Ausführungsplan basierend auf der heruntergedrückten Anweisung. Nach der Ausführung wird das Ergebnis an CN gesendet und CN führt den verbleibenden Plan aus.

Die Extremszenarien 1, 3 und 4 können nicht erfüllt werden und die Leistung ist sehr schlecht. Zu den Funktionen, die Pushdown derzeit nicht unterstützen, gehören hauptsächlich: Datentyp aufzeichnen, flüchtige Funktion usw.

3

CN gab eine Erklärung ab

Generieren Sie einen CN-Lightweight-Plan

Generieren Sie einen Ausführungsplan und geben Sie Ergebnisse von DN zurück

Nur ein einzelner DN führt die Anweisung aus und das DN-Ergebnis ist das endgültige Rückgabeergebnis.

4

CN-Generierungsplan

Generieren Sie einen verteilten Plan (Stream-Plan) zur Bereitstellung des Plans

CN generiert einen Plan basierend auf der ursprünglichen Anweisung und sendet ihn zur Ausführung an DN. Während der Ausführung jedes DN findet eine Dateninteraktion (Stream-Operator) statt.

Während der Ausführung jedes DN kommt es zu Dateninteraktionen und in AP-Szenarien zu komplexen Anweisungen.

Die ersten drei Pläne sehen alle vor, dass CN Erklärungen an DN herausgibt. Der vierte Plan sieht vor, dass CN einen Plan erstellt und diesen an DN übermittelt. Der vierte Plan wird auch Stream-Plan genannt und ist der am häufigsten verwendete Plan.

Warum ist die Abgabe von Stellungnahmen geplant?

CN generiert einen Ausführungsplan, der mehr CPU-Ressourcen verbraucht, und der Plan ist viel größer als die ursprüngliche Anweisung. Der Aufwand für die Ausgabe von Anweisungen für CN und die Netzwerkübertragung ist viel geringer.

Extra!

cke_41127.jpeg

Huawei veranstaltet vom 20. bis 22. September 2023 die 8. HUAWEI CONNECT 2023 in der Shanghai World Expo Exhibition Hall und im Shanghai World Expo Center. Unter dem Motto „Beschleunigung der Branchenintelligenz“ lädt diese Konferenz Vordenker, Wirtschaftseliten, technische Experten, Partner, Entwickler und andere Branchenkollegen ein, darüber zu diskutieren, wie Branchenintelligenz aus Wirtschaft, Industrie und Ökologie beschleunigt werden kann.

Wir laden Sie herzlich ein, die Website zu besuchen, sich über die Chancen und Herausforderungen der Intelligentisierung auszutauschen, die wichtigsten Maßnahmen der Intelligentisierung zu diskutieren und die Innovation und Anwendung intelligenter Technologie zu erleben. du kannst:

  • In über 100 Keynote-Vorträgen, Gipfeltreffen und Foren kollidieren Sie mit dem Standpunkt, Brancheninformationen zu beschleunigen
  • Besuchen Sie die 17.000 Quadratmeter große Ausstellungsfläche, um die Innovation und Anwendung intelligenter Technologie in der Branche hautnah zu erleben
  • Treffen Sie sich persönlich mit technischen Experten, um mehr über die neuesten Lösungen, Entwicklungstools und praktische Übungen zu erfahren
  • Suchen Sie nach Geschäftsmöglichkeiten mit Kunden und Partnern

Wir danken Ihnen wie immer für Ihre Unterstützung und Ihr Vertrauen und freuen uns darauf, Sie in Shanghai zu treffen.

Offizielle Website der Konferenz: https://www.huawei.com/cn/events/huaweiconnect

Folgen Sie gerne dem offiziellen Konto der „Huawei Cloud Developer Alliance“, um das Konferenzprogramm, spannende Aktivitäten und hochmoderne Trockenprodukte zu erhalten.

Klicken Sie hier, um zu folgen und so schnell wie möglich mehr über die neuen Technologien von Huawei Cloud zu erfahren~

Die Schüler der Mittelstufe im dritten Jahr haben die Webversion von Windows 12 Deepin-IDE geschrieben und offiziell vorgestellt. Sie behauptet, „eigentlich selbst entwickelt“ zu sein. QQ hat ein „drei-Terminal-simultanes Update“ erreicht, und die zugrunde liegende NT-Architektur ist es basierend auf Electron QQ für Linux Offiziell veröffentlicht 3.2.0 „Vater von Hongmeng“ Wang Chenglu: Das PC-Versionssystem von Hongmeng wird nächstes Jahr eingeführt, um ChatGPT herauszufordern. Es gibt 8 im Inland produzierte KI-Großmodellprodukte GitUI v0.24.0 veröffentlicht, Das von Rust geschriebene Standard-Hintergrundbild für das Git-Terminal Ubuntu 23.10 wird angekündigt, und die „Tauren“ im Labyrinth. JetBrains kündigte die WebStorm 2023.3-Roadmap China Human Java Ecosystem an, Solon v2.5.3 wurde veröffentlicht
{{o.name}}
{{m.name}}

Ich denke du magst

Origin my.oschina.net/u/4526289/blog/10108627
Empfohlen
Rangfolge