PostgreSQL 11: Entwicklung der Partitionierung von Postgres 9.6 zu Postgres 11

Habt alle einen tollen Freitag! Bis zum Kursstart bleibt immer weniger Zeit „Relationales DBMS“Deshalb teilen wir heute die Übersetzung eines weiteren nützlichen Materials zu diesem Thema.

In Entwicklung PostgreSQL 11 Es wurden beeindruckende Arbeiten zur Verbesserung der Tabellenpartitionierung durchgeführt. Partitionierungstabellen - Dies ist eine Funktion, die in PostgreSQL schon seit längerem existiert, aber sozusagen im Wesentlichen erst in Version 10 existierte, in der sie zu einer sehr nützlichen Funktion wurde. Wir haben zuvor erklärt, dass die Tabellenvererbung unsere Implementierung der Partitionierung ist, und das stimmt. Nur diese Methode zwang Sie dazu, den Großteil der Arbeit manuell zu erledigen. Wenn Sie beispielsweise möchten, dass Tupel während INSERT-Vorgängen in Abschnitte eingefügt werden, müssen Sie Trigger konfigurieren, die dies für Sie tun. Die Partitionierung durch Vererbung war sehr langsam und es war schwierig, darüber hinaus zusätzliche Funktionen zu entwickeln.

In PostgreSQL 10 erlebten wir die Geburt der „deklarativen Partitionierung“, einer Funktion zur Lösung vieler Probleme, die mit der alten Vererbungsmethode unlösbar waren. Dies führte zu einem viel leistungsfähigeren Tool, mit dem wir Daten horizontal aufteilen konnten!

Funktionsvergleich

PostgreSQL 11 führt eine beeindruckende Reihe neuer Funktionen ein, die dazu beitragen, die Leistung zu verbessern und partitionierte Tabellen für Anwendungen transparenter zu machen.

PostgreSQL 11: Entwicklung der Partitionierung von Postgres 9.6 zu Postgres 11
PostgreSQL 11: Entwicklung der Partitionierung von Postgres 9.6 zu Postgres 11
PostgreSQL 11: Entwicklung der Partitionierung von Postgres 9.6 zu Postgres 11
1. Begrenzende Ausnahmen verwenden
2. Fügt nur Knoten hinzu
3. Nur für eine partitionierte Tabelle, die auf eine nicht partitionierte Tabelle verweist
4. Indizes müssen alle Schlüsselspalten der Partition enthalten
5. Abschnittsbeschränkungen auf beiden Seiten müssen übereinstimmen

Leistung

Auch hier haben wir gute Neuigkeiten! Neue Methode hinzugefügt Abschnitte löschen. Dieser neue Algorithmus kann geeignete Abschnitte anhand der Abfragebedingung ermitteln WHERE. Der vorherige Algorithmus überprüfte wiederum jeden Abschnitt, um festzustellen, ob er die Bedingung erfüllen konnte WHERE. Dies führte zu einer zusätzlichen Verlängerung der Planungszeit, da die Anzahl der Abschnitte zunahm.

In 9.6 erfolgte bei der Partitionierung durch Vererbung das Weiterleiten von Tupeln in Partitionen typischerweise durch das Schreiben einer Triggerfunktion, die eine Reihe von IF-Anweisungen enthielt, um das Tupel in die richtige Partition einzufügen. Die Ausführung dieser Funktionen kann sehr langsam sein. Mit der in Version 10 hinzugefügten deklarativen Partitionierung funktioniert dies viel schneller.

Anhand einer partitionierten Tabelle mit 100 Partitionen können wir die Leistung beim Laden von 10 Millionen Zeilen in eine Tabelle mit 1 BIGINT-Spalte und 5 INT-Spalten bewerten.

PostgreSQL 11: Entwicklung der Partitionierung von Postgres 9.6 zu Postgres 11

Leistung beim Abfragen dieser Tabelle, um einen indizierten Datensatz zu finden und DML auszuführen, um einen Datensatz zu bearbeiten (mit nur einem Prozessor):

PostgreSQL 11: Entwicklung der Partitionierung von Postgres 9.6 zu Postgres 11

Hier können wir sehen, dass die Leistung jeder Operation seit PG 9.6 erheblich gestiegen ist. Anfragen SELECT sehen viel besser aus, insbesondere solche, die bei der Abfrageplanung mehrere Partitionen ausschließen können. Das bedeutet, dass der Planer viel Arbeit überspringen kann, die er vorher hätte erledigen sollen. Beispielsweise werden für unnötige Abschnitte keine Wege mehr angelegt.

Abschluss

Die Tabellenpartitionierung entwickelt sich zunehmend zu einer sehr leistungsstarken Funktion in PostgreSQL. Damit können Sie Daten schnell online anzeigen und offline schalten, ohne auf den Abschluss langsamer, umfangreicher DML-Vorgänge warten zu müssen.. Dies bedeutet auch, dass zusammengehörige Daten zusammen gespeichert werden können, sodass auf die benötigten Daten viel effizienter zugegriffen werden kann. Die in dieser Version vorgenommenen Verbesserungen wären ohne die Entwickler, Prüfer und Committer, die unermüdlich an all diesen Funktionen gearbeitet haben, nicht möglich gewesen.
Vielen Dank an alle! PostgreSQL 11 sieht fantastisch aus!

Hier ist so ein kurzer, aber sehr interessanter Artikel. Teilen Sie Ihre Kommentare mit und vergessen Sie nicht, sich anzumelden Tag der offenen Tür, in dem das Kursprogramm im Detail beschrieben wird.

Source: habr.com

Kommentar hinzufügen