PostgreSQL 12: Feintuning für die quelloffene Datenbank

Feinschliff an vielen Stellen macht die zwölfte Auflage der Open-Source-Datenbank vor allem schneller. Es bleibt aber noch Spielraum für weitere Verbesserungen.

Artikel verschenken
In Pocket speichern vorlesen Druckansicht
Feinschliff für PostgreSQL
Lesezeit: 9 Min.
Von
  • Robert Wunderer
Inhaltsverzeichnis

Die PostgreSQL-Entwickler haben im Herbst 2019 Version 12 der quelloffenen Datenbank für die Öffentlichkeit freigegeben. Wie schon bei PostgreSQL 11 halten sich die ganz großen Umbrüche in Grenzen – es gibt aber viele interessante Neuerungen zu berichten und die Entwickler haben sich viel Zeit für das Feintuning genommen.

So haben sie die mit PostgreSQL 11 neu eingeführte Just-in-Time-Kompilierung (JIT) weiter verbessert und ab Version 12 nun standardmäßig aktiviert. Vor allem bei aufwendigen analytischen Abfragen aus dem Bereich des Data Warehousing soll das Feature spürbare Geschwindigkeitsvorteile bringen.

Im Bereich der Prepared Statements – einmal vorbereiteter Befehle, die von einer Anwendung immer wieder mit geänderten Parametern aufgerufen werden – erhalten Benutzer die Möglichkeit, selbst Leistungsverbesserungen herbeizuführen. Dabei steuern sie, ob PostgreSQL einen spezifischen oder einen generischen Plan für Abfragen verwendet. PostgreSQL berücksichtigt bei der Plangenerierung nicht nur die in der Verarbeitung verwendeten Tabellen und Spalten, sondern auch den Einfluss der konkreten Parameter auf die Abfrage. Abhängig davon, ob eine Bedingung einen häufig oder selten auftretenden Wert beinhaltet, werden somit möglicherweise unterschiedliche Pfade verwendet. Diese Abhängigkeit von konkreten Parametern hat jedoch zur Folge, dass auch bei Prepared Statements für jede Abfrage ein neuer Plan erstellt werden muss und so ein potenzieller Vorteil der vorbereiteten Abfragen ungenutzt bleibt. Bisher hat PostgreSQL daher nach der fünften Ausführung eines vorbereiteten Befehls entschieden, ob die Datenbank weiter spezifische Pläne erstellt oder auf einen generischen Plan (also ohne Berücksichtigung der Parameterwerte) zurückgreift.