Nach vier Monaten im Betatest ist PostgreSQL 12 jetzt allgemein verfügbar. Bei dem aktuellen Release haben sich Die Entwickler besonders auf die Verbesserung der Performance konzentriert.

Neben anderen Funktionen haben sie die B-Traum- und GiST-Indizes und auch den Umgang mit partitionierten Tabellen verbessert. Auch neu ist der Zugriff auf JSON-Daten über SQL/JSON sowie das automatische Einbinden von WITH-Abfragen in andere Datenbank-Querys.

Der schon in der vor einem Jahr herausgegebenen Version PostgreSQL11 eingeführte Just-in-Time-Compiler (JiT) ist jetzt standardmäßig aktiviert. Der Compiler beschleunigt vor allem WHERE-Klauseln, Ziellisten, Projektionen und Aggregatfunktionen.

Beschleunigte Indizes

Einen Schwerpunkt bei der Optimierung machten die B-Baum-Indizes aus, welche die Open-Source-Datenbank standardmäßig für Indices verwendet. Nach Angaben des PostgreSQL-Teams zeigen Benchmarks mit dem Online-Transaktionsverarbeitungs-Benchmark (OLTP) TPC-C einen im Schnitt um 40 Prozent reduzierten Platzbedarf und auch einen allgemeinen Performancegewinn.

Bei der Indizierung über GiST (Generalized Search Tree), SP-GiST (Space Partitioned GiST) und GIN (Generalized Inverted Index) wurde die Performance verbessert. Außerdem erzeugt dabei das Write Ahead Logging (WAL), das Modifikationen im Interesse der Atomarität vor dem Schreiben in die Datenbank protokolliert, weniger Daten. Ganz neu ist auch, dass GiST-Indizes neuerdings INCLUDE-Klausel haben dürfen.

Performanter auch bei partitionierten Tabellen

Im Bereich der partitionierten Tabellen bringt PostgreSQL 12 ebenfalls Performanceverbesserungen. So arbeitet das System unter anderem dann effizienter, wenn Operationen auf einer Tabelle mit Tausenden Partitionen laufen, die dabei nur einen kleinen Teil davon betreffen. Bei INSERT und COPY sollen für partitionierte Tabellen jetzt auch besser performen.

Die Datenbankadministratoren können jetzt mit PostgreSQL 12 Ausfallzeiten reduzieren, indem sie die Indizes über REINDEX CONCURRENTLY erneuern. Das Erstellen des Index erfolgt dabei parallel, sodass keine Schreibvorgänge blockiert werden.

Abfrage von JSON-Dokumenten

PostgreSQL 12 kann nun auch Abfragen auf JSON-Dokumente durchführen. Dazu werden die SQL/JSON Path Expressions benutzt. Die Expressions sind dazu als jsonpath-Datentyp implementiert. Einen Überblick bietet die Dokumentation zu PostgreSQL 12.