Die relationale Datenbank PostgreSQL offeriert in ihrer neuen Version unter anderem weitere JSON-Fähigkeiten, Verbesserungen bei der Replikation, eine zusätzliche Verbindungsmöglichkeit für Clients und ein neues Speichermanagement für Vacuum.
Der Begriff Vacuum bezeichnet wichtige Wartungsaktionen an einer Datenbank. Dazu zählen etwa die Freigabe von Speicherplatz und die Aktualisierung von Statistiken. Die in PostgeSQL 17 eingeführte neue Speicherstruktur für Vacuum soll bis zu 20 Prozent weniger Speicher verbrauchen und so gleichzeitig die Wartungsprozesse beschleunigen.
Weitere Performance-Verbesserungen
Darüber hinaus haben die Entwickler den I/O-Layer optimiert, der bei nebenläufigen Workloads im besten Fall eine doppelt so hohe Performance abliefert. Die neue Streaming-I/O-Schnittstelle beschleunigt zudem das Einlesen einer kompletten Tabelle (Sequentielle Scans).
Auch bei der Ausführung von Anfragen arbeitet PostgreSQL flotter. Das gilt vor allem für Queries, die mit der „IN“-Klausel auf B-Trees-Indexe arbeiten – letztgenannte verwendet PostgresSQL standardmäßig für einen Index. Die BRIN-Indexe unterstützen parallele Builds. Verbesserungen gibt es auch bei der Query-Planung. Ein Beispiel ist die Optimierung von „NOT NULL“ Constraints.
Dank der ausgebauten Unterstützung für SIMD (Single Instruction/Multiple Data) führt PostgreSQL einige Berechnungen schneller durch. Die „bit_count“-Funktion zieht jetzt beispielsweise die AVX-512-Befehlssatzerweiterung auf x86-Prozessoren heran.
Der „COPY“-Befehl arbeitet ebenfalls flotter. Das gilt insbesondere, wenn Quelle und Ziel die gleiche Zeichenkodierung nutzen und wenn man große Zeilen exportiert. „COPY“ kennt zudem die Option „ON_ERROR ignore“, mit der PostgreSQL auch bei Fehlern einfach munter weiterkopiert.
Neue Befehle
PostgreSQL 17 bietet den „JSON_TABLE“-Befehl, der Daten im JSON-Format in eine normale SQL-Tabelle steckt. Den Umgang mit JSON-Daten vereinfachen zudem passende Query-Funktionen (im Einzelnen JSON_EXISTS, JSON_QUERY und JSON_VALUE) sowie SQL/JSON-Konstruktoren (JSON, JSON_SCALAR und JSON_SERIALIZE).
Die Entwickler haben zudem „MERGE“ aufgebohrt. Unter anderem gibt es jetzt eine „RETURNING“-Klausel und die Möglichkeit, Views zu aktualisieren.
Verbesserte Replikation
Wer Logical Replication einsetzt und auf eine neue Major-Version von PostgreSQL aktualisieren wollte, musste in der Vergangenheit die Logical Replication Slots deaktivieren und nach dem Update die Daten erneut synchronisieren lassen. Ab PostgreSQL 17 ist dies nicht mehr notwendig – „pg_upgrade“ erhält die Replication Slots sowohl beim Publisher als auch Subscribern.
PostgreSQL ergreift auch Maßnahmen bei einem Failover, was die Logical Replication insbesondere in hochverfügbaren Umgebungen robuster macht. Das neue Tool „pg_createsubscriber“ konvertiert schließlich noch auf Wunsch eine physische Replik in eine logische.
Sonstige Neuerungen
Clients können eine TLS-Verbindung via „sslnegotiation=direct“ aufbauen. Dabei führen die Parteien einen direkten Handshake durch. Das Backup-Werkzeug „pg_basebackup“ unterstützt inkrementelle Backups. Aus denen konstruiert „pg_combinebackup“ bei Bedarf ein vollständiges Backup.
„EXPLAIN“ verrät jetzt auch die Zeit, die für lokale I/O-Block-Operationen benötigt wurden. Neu sind zudem die beiden Operationen „SERIALIZE“ und „MEMORY“. Mit ihnen lässt sich vor allem die Zeit ermitteln, die für eine Datenkonvertierung für die Netzwerkübertragung anfällt.





