2024 Postgres Conference Conference丨Ein Artikel erläutert ausführlich den Kern von Tuoshupais informativer Rede

Vom 17. bis 19. April fand in San Jose, USA, die Postgres-Konferenz 2024 statt, eine der weltweit größten PostgreSQL-Konferenzen. Diese Konferenz umfasste vier Tracks: Ops, Dev, Essentials und Google Cloud Themen wie Management und Anwendung, Benutzerbeispiele und Erfahrungen wurden vorgestellt, und hochrangige Dozenten von Google, AWS, EDB, Yugabyte, DBeaver und anderen Unternehmen wurden zur Konferenz eingeladen. Aufgrund seines starken Einflusses in der internationalen Technologiegemeinschaft wurde Tuoshupai eingeladen, als Konferenzsponsor an dieser Veranstaltung teilzunehmen und eine technische Rede zu halten.

Auf der Konferenz wurde der technische Experte von PieCloudDB, Richard Guo, als neuer PostgreSQL-Mitwirkender eingeladen, eine technische Rede zu halten: „Eine umfassende Einführung in den Abfrageplaner in PostgreSQL“, in der er die Erfahrungen beim Aufbau des PieCloudDB-Datenbankoptimierers kombinierte Der PostgreSQL-Optimierer aus der Sicht eines Entwicklers wird ausführlich vorgestellt und der Prozess der Konvertierung eines Abfragebaums in einen Planbaum. Richards Rede stieß beim Publikum auf positive Resonanz und führte zu intensiver Interaktion und Kommunikation.

In einem Datenbankverwaltungssystem (DBMS) ist die SQL-Abfrageverarbeitung ein komplexer und kritischer Prozess. Für PostgreSQL muss eine SQL-Anweisung vom Empfang bis zur Ausführung die folgenden fünf Hauptschritte durchlaufen:

  • Parser: Verantwortlich für die Überprüfung von Syntaxfehlern und die Erstellung eines Parserbaums;
  • Analyse (Analysator): Führen Sie eine semantische Analyse basierend auf dem Analysebaum durch und generieren Sie einen Abfragebaum.
  • Rewriter: Schreiben Sie den Abfragebaum gemäß den im System vorhandenen Regeln neu.
  • Planung/Optimierung (Planer): Generieren Sie basierend auf dem Abfragebaum einen Planbaum mit der höchsten Ausführungseffizienz.
  • Ausführender: Greifen Sie in der Reihenfolge im Planbaum auf Tabellen und Indizes zu und führen Sie die entsprechende Abfrage aus.

Die gleiche Abfrageanweisung kann im Allgemeinen auf mehrere Arten ausgeführt werden. Als wichtiger Bestandteil der Datenbank besteht die Aufgabe des Abfrageoptimierers darin, aus jedem möglichen Ausführungsmodus den Abfrageplan mit den niedrigsten Kosten zu finden und ihn in einen ausführbaren Planbaum umzuwandeln.

Im Folgenden konzentrieren wir uns auf die Planungs-/Optimierungsphase bei der PostgreSQL-Abfrageverarbeitung, die auch die wichtigste und komplexeste Phase im gesamten Prozess ist. Der Prozess ist im Allgemeinen in vier Phasen unterteilt: Vorverarbeitungsphase, Scan-/Verbindungsoptimierungsphase, Optimierungsphase außerhalb des Scannens/Verbindung und Nachverarbeitungsphase.

1. Vorverarbeitungsphase

In der frühen Phase der Vorverarbeitung werden Abfragen im Allgemeinen so weit wie möglich vereinfacht, indem konstante Ausdrücke (Funktionen, Boolean, CASE usw.) vereinfacht und einfache SQL-Funktionen inliniert werden. Gleichzeitig wird der Join-Baum vereinfacht, indem IN, EXISTS und andere Arten von Unterabfragen in Semi-Joins umgewandelt, Unterabfragen gefördert und äußere Joins eliminiert werden (sie werden in innere Joins oder Anti-Joins umgewandelt).

Zusätzlich zu diesen Methoden kommen später in der Vorverarbeitungsphase verschiedene Optimierungsmethoden zum Einsatz, darunter:

  • Verteilen Sie WHERE- und JOIN/ON-Einschränkungen
  • Erstellen Sie Äquivalenzklassen
  • Sammeln Sie Informationen zu Einschränkungen bei der Beitrittsreihenfolge
  • Beseitigen Sie nutzlose Verbindungen
  • ...

2. Scan-/Verbindungsoptimierungsphase

Die Scan-/Verbindungsoptimierungsphase verarbeitet hauptsächlich die FROM- und WHERE-Teile der Abfrageanweisung und berücksichtigt auch die ORDER BY-Informationen. Dieser Teil hängt ausschließlich von den Kosten ab.

In dieser Phase wird zunächst der Scanpfad für die Basistabelle bestimmt, die Kosten des Scanpfads geschätzt und dann mithilfe dynamischer Programmierung und genetischer Algorithmen der gesamte Verbindungssequenzraum durchsucht und der Verbindungspfad generiert. Beim Durchsuchen des Verbindungsreihenfolgeraums müssen auch die durch äußere Verknüpfungen verursachten Verbindungsreihenfolgebeschränkungen berücksichtigt werden.

Bei der dynamischen Programmierung läuft die Verbindungssuche wie folgt ab:

  • Generieren Sie zunächst einen Scanpfad für jede Basistabelle
  • Generieren Sie Join-Pfade für alle möglichen Joins zweier Tabellen
  • Generieren Sie Join-Pfade für alle möglichen Joins der drei Tabellen
  • Generieren Sie Join-Pfade für alle möglichen Joins von vier Tabellen
  • ...
  • Bis alle Basistische miteinander verbunden sind

Der Aufwand für diesen Prozess ist jedoch sehr hoch. Theoretisch gibt es n verschiedene Verbindungsreihenfolgen. Es ist unrealistisch, alle möglichen Verbindungsreihenfolgen zu durchlaufen. Daher werden normalerweise einige heuristische Methoden verwendet, um den Suchraum zu reduzieren. Versuchen Sie, ein großes Problem nicht in mehrere Unterprobleme zu zerlegen, um die Komplexität zu verringern.

3. Optimierungsphase über das Scannen/Anschließen hinaus

In dieser Phase priorisiert der Optimierer GROUP BY, Aggregation, Fensterfunktionen und DISTINCT, verarbeitet dann Sammlungsoperationen (UNION/INTERSECT/EXCEPT) und verarbeitet schließlich ORDER BY. Jeder der oben genannten Schritte generiert einen oder mehrere Pfade. Der Optimierer filtert diese Pfade basierend auf den Kosten und fügt LockRows-, Limit- und ModifyTable-Knoten zu den gefilterten Pfaden hinzu.

4. Nachbearbeitungsphase

In dieser Phase muss der Optimierer den kostengünstigsten Pfad in einen Planbaum umwandeln und einige Details im Planbaum anpassen:

  • Reduzieren Sie die Bereichstabelle einer Unterabfrage
  • Ändern Sie die Variablen im oberen Planknoten in die Form OUTER_VAR oder INNER_VAR, um auf die Ausgabe des Unterplans zu verweisen
  • Löschen Sie unnötige SubqueryScan-, Append-, MergeAppend- und andere Knoten

Nach Abschluss dieses Schritts erhält der Optimierer den vollständigen Planbaum und kann den Planbaum zur Ausführung an den Ausführenden übergeben und schließlich die Abfrageergebnisse abrufen.

Als High-Tech-Innovationsunternehmen mit Sitz in China war Tuoshupai in den letzten Jahren durch Codebeiträge, Vorträge, Konferenzsponsoring und -teilnahme, ökologische Zusammenarbeit und andere Formen stark in die internationale Open-Source-Technologie und das Ökosystem eingebunden. In Zukunft wird Tuoshupai seinen internationalen Horizont weiter erweitern, sich aktiv in die Welle globaler technologischer Innovationen integrieren, seinen internationalen Einfluss ausbauen und ein internationales technologiegetriebenes Unternehmen aufbauen.

Ich habe beschlossen, Open-Source-Hongmeng aufzugeben . Wang Chenglu, der Vater von Open-Source-Hongmeng: Open-Source-Hongmeng ist die einzige Architekturinnovations- Industriesoftwareveranstaltung im Bereich Basissoftware in China – OGG 1.0 wird veröffentlicht, Huawei steuert den gesamten Quellcode bei Google Reader wird vom „Code-Scheißberg“ getötet Fedora Linux 40 wird offiziell veröffentlicht Ehemaliger Microsoft-Entwickler: Windows 11-Leistung ist „lächerlich schlecht“ Ma Huateng und Zhou Hongyi geben sich die Hand, um „Groll zu beseitigen“ Namhafte Spielefirmen haben neue Vorschriften erlassen : Hochzeitsgeschenke für Mitarbeiter dürfen 100.000 Yuan nicht überschreiten Ubuntu 24.04 LTS offiziell veröffentlicht Pinduoduo wurde wegen unlauteren Wettbewerbs zu einer Entschädigung von 5 Millionen Yuan verurteilt
{{o.name}}
{{m.name}}

Ich denke du magst

Origin my.oschina.net/u/5944765/blog/11059181
Empfohlen
Rangfolge