Guten Freitag allerseits! Bis zum Start des
relationalen DBMS- Kurses bleibt immer weniger Zeit.
Daher teilen wir heute die Übersetzung eines weiteren nützlichen Materials zu diesem Thema.

Während des Entwicklungsprozesses von
PostgreSQL 11 wurden beeindruckende Arbeiten zur Verbesserung der Tabellenpartitionierung durchgeführt.
Die Tabellenpartitionierung ist eine Funktion, die in PostgreSQL schon seit einiger Zeit existiert, aber sozusagen erst in Version 10, in der sie zu einer sehr nützlichen Funktion wurde. Wir haben zuvor festgestellt, dass die Tabellenvererbung unsere Implementierung der Partitionierung ist, und das ist wahr. Nur diese Methode hat Sie gezwungen, den größten Teil der Arbeit manuell zu erledigen. Wenn Sie beispielsweise wollten, dass Tupel während INSERTs in Abschnitte eingefügt werden, mussten Sie Trigger konfigurieren, um dies für Sie zu tun. Die Partitionierung mithilfe der Vererbung war sehr langsam und es war schwierig, zusätzliche Funktionen zu entwickeln.
In PostgreSQL 10 wurde die „deklarative Partitionierung“ eingeführt, eine Funktion zur Lösung vieler Probleme, die bei Verwendung der alten Methode mit Vererbung nicht lösbar waren. Dies führte zur Entwicklung eines viel leistungsfähigeren Tools, mit dem wir die Daten horizontal aufteilen können!
FunktionsvergleichPostgreSQL 11 bietet eine beeindruckende Reihe neuer Funktionen, mit denen die Leistung verbessert und partitionierte Tabellen für Anwendungen transparenter gemacht werden können.


1. Verwendung restriktiver Ausnahmen
2. Fügt nur Knoten hinzu
3. Nur für eine partitionierte Tabelle, die sich auf eine nicht partitionierte Tabelle bezieht
4. Indizes müssen alle Schlüsselspalten eines Abschnitts enthalten
5. Die Beschränkung des Abschnitts auf beiden Seiten muss übereinstimmenLeistungHier haben wir auch gute Neuigkeiten! Eine neue Methode zum
Löschen von Abschnitten wurde hinzugefügt. Dieser neue Algorithmus kann geeignete Abschnitte anhand der
WHERE
Abfragebedingung ermitteln. Der vorherige Algorithmus überprüfte seinerseits jeden Abschnitt, um festzustellen, ob er mit der
WHERE
übereinstimmen konnte. Dies führte zu einer zusätzlichen Verlängerung der Planungszeit, da die Anzahl der Abschnitte zunahm.
In 9.6 wurde bei der Partitionierung durch Vererbung das Routing von Tupeln in einem Abschnitt normalerweise durch Schreiben einer Triggerfunktion durchgeführt, die eine Reihe von IF-Anweisungen enthielt, um das Tupel in den richtigen Abschnitt einzufügen. Diese Funktionen können sehr langsam ausgeführt werden. Mit der in Version 10 hinzugefügten deklarativen Partitionierung ist dies viel schneller geworden.
Mithilfe einer partitionierten Tabelle mit 100 Abschnitten können wir die Leistung beim Laden von 10 Millionen Zeilen in eine Tabelle mit 1 BIGINT-Spalte und 5 INT-Spalten schätzen.

Die Leistung einer Abfrage in dieser Tabelle zum Suchen nach einem indizierten Datensatz und Ausführen von DML zum Bearbeiten eines Datensatzes (mit nur 1 Prozessor):

Hier sehen wir, dass die Leistung jeder Operation nach PG 9.6 signifikant gestiegen ist.
SELECT
Abfragen sehen viel besser aus, insbesondere solche, die mehrere Abschnitte während der Abfrageplanung ausschließen können. Dies bedeutet, dass der Planer den größten Teil der Arbeit überspringen kann, die er zuvor hätte erledigen sollen. Beispielsweise werden keine Pfade für unnötige Abschnitte mehr erstellt.
FazitDas Partitionieren von Tabellen wird in PostgreSQL zu einer sehr leistungsstarken Funktion.
Sie können Daten schnell online ausgeben und offline übersetzen, ohne auf den Abschluss langsamer, massiver DML-Vorgänge warten zu müssen . Dies bedeutet auch, dass verwandte Daten zusammen gespeichert werden können, was bedeutet, dass auf die erforderlichen Daten viel effizienter zugegriffen werden kann. Verbesserungen in dieser Version wären ohne 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 ziemlich interessanter Artikel. Teilen Sie Ihre Kommentare mit und vergessen Sie nicht, sich für einen
Tag der offenen Tür anzumelden , an dem das Kursprogramm ausführlich beschrieben wird.