13 Punkte von GN⁺ 2024-09-27 | 1 Kommentare | Auf WhatsApp teilen
  • PostgreSQL 17 umfasst wichtige Leistungsverbesserungen, ein verbessertes Speichermanagement, optimierten Speicherzugriff, Verbesserungen bei Workloads mit hoher Parallelität, höhere Geschwindigkeiten beim Massenladen und Exportieren sowie eine verbesserte Ausführung von Indexabfragen

Leistungsverbesserungen im gesamten System

  • Die internen Speicherstrukturen des PostgreSQL-vacuum-Prozesses, der für den normalen Betrieb essenziell ist, wurden verbessert, wodurch der Speicherverbrauch um bis zu das 20-Fache gesenkt wird
    • Höhere vacuum-Geschwindigkeit und geringere Nutzung gemeinsam genutzter Ressourcen machen mehr Ressourcen für Workloads verfügbar
  • Die Performance der I/O-Schicht wurde kontinuierlich verbessert
    • Verbesserungen bei der Verarbeitung des Write-Ahead Log (WAL) liefern bei Workloads mit hoher Parallelität eine bis zu doppelt so hohe Schreibdurchsatzleistung
    • Eine neue Streaming-I/O-Schnittstelle erhöht die Geschwindigkeit von Sequential Scans (Lesen aller Daten aus einer Tabelle) und die Geschwindigkeit, mit der der Befehl ANALYZE Ausführungsplanstatistiken aktualisiert
  • Leistungsverbesserungen wurden auch auf die Abfrageausführung ausgeweitet
    • Die Performance von Abfragen mit IN-Klauseln, die B-Tree-Indizes (die Standard-Indexmethode von PostgreSQL) verwenden, wurde verbessert
    • Paralleles Erstellen von BRIN-Indizes wird unterstützt
  • Enthält mehrere Verbesserungen für die Abfrageplanung
    • Optimierungen für NOT NULL-Constraints
    • Verbesserte Verarbeitung von Common Table Expressions (WITH-Abfragen)
  • Erweiterte SIMD-Unterstützung (Single Instruction/Multiple Data) zur Beschleunigung von Berechnungen, darunter die Nutzung von AVX-512 in der Funktion bit_count

Die starke Developer Experience weiter ausgebaut

  • PostgreSQL war die erste relationale Datenbank mit JSON-Unterstützung (2012)
  • In PostgreSQL 17 wurde die Implementierung des SQL/JSON-Standards weiter ausgebaut
    • Mit JSON_TABLE lassen sich JSON-Daten in Standard-PostgreSQL-Tabellen umwandeln
    • Unterstützung für SQL/JSON-Konstruktoren (JSON, JSON_SCALAR, JSON_SERIALIZE) und Abfragefunktionen (JSON_EXISTS, JSON_QUERY, JSON_VALUE)
    • Hinzugefügte jsonpath-Ausdrücke mit Fokus auf die Umwandlung von JSON-Daten in native PostgreSQL-Datentypen (Zahlen, Boolean, Strings, Datum/Uhrzeit)
  • Dem Befehl MERGE wurden eine RETURNING-Klausel und die Möglichkeit zur Aktualisierung von Views hinzugefügt
  • Verbesserungen beim Massenladen und beim Datenexport
    • Beim Export großer Zeilen mit dem Befehl COPY bis zu doppelte Leistungssteigerung
    • Verbesserte COPY-Performance, wenn Quell- und Ziel-Encoding übereinstimmen
    • Neue Option ON_ERROR, mit der der Import auch bei Einfügefehlern fortgesetzt werden kann
  • Die Funktionen zur Verwaltung von Daten, die über Partitionen und entfernte PostgreSQL-Instanzen verteilt sind, wurden erweitert
    • Unterstützung für ID-Spalten und Exclusion Constraints in partitionierten Tabellen
    • Mit postgres_fdw können EXISTS- und IN-Subqueries auf Remote-Server gepusht werden
  • Enthält einen eingebauten plattformunabhängigen und unveränderlichen Collation-Provider
    • Bietet Sortiersemantik ähnlich der C-Collation, verwendet aber UTF-8-Encoding anstelle von SQL_ASCII
    • Mit diesem neuen Collation-Provider liefern textbasierte Abfragen unabhängig vom Ausführungsort von PostgreSQL dieselben Sortierergebnisse

Verbesserte logische Replikation für Hochverfügbarkeit und Upgrades auf neue Hauptversionen

  • Logische Replikation wird zum Streamen von Daten in Echtzeit verwendet
  • In früheren Versionen mussten bei Upgrades auf neue Hauptversionen logische Replikations-Slots gelöscht werden, wodurch nach dem Upgrade eine erneute Synchronisierung der Daten mit den Subscriber-Systemen nötig war
  • Ab PostgreSQL 17 müssen logische Replikations-Slots nicht mehr gelöscht werden, was den Upgrade-Prozess vereinfacht
  • Enthält Failover-Steuerung für die logische Replikation und ermöglicht dadurch resilientere Deployments in Hochverfügbarkeitsumgebungen
  • Einführung des Kommandozeilenwerkzeugs pg_createsubscriber, mit dem sich physische Replikate in neue logische Replikate umwandeln lassen

Mehr Optionen für Sicherheit und Betriebsmanagement

  • PostgreSQL 17 erweitert weiter, wie Nutzer den gesamten Lebenszyklus des Datenbanksystems verwalten können
  • Neue TLS-Option sslnegotiation hinzugefügt, mit der bei Verwendung von ALPN direkt ein TLS-Handshake ausgeführt werden kann
  • Hinzugefügt wurde die vordefinierte Rolle pg_maintain, die Berechtigungen zum Ausführen von Wartungsaufgaben vergibt
  • pg_basebackup, das in PostgreSQL enthaltene Backup-Utility, unterstützt jetzt inkrementelle Backups; außerdem wurde das Utility pg_combinebackup hinzugefügt, um vollständige Backups zu rekonstruieren
  • pg_dump enthält eine neue Option --filter, mit der sich auswählen lässt, welche Objekte beim Erstellen einer Dump-Datei einbezogen werden
  • Verbesserte Monitoring- und Analysefunktionen
    • EXPLAIN zeigt die Zeit an, die für das Lesen und Schreiben lokaler I/O-Blöcke benötigt wurde
    • Enthält zwei neue Optionen, SERIALIZE und MEMORY: nützlich, um die für die Datenumwandlung zur Netzwerkübertragung benötigte Zeit und die verwendete Speichermenge zu prüfen
  • Meldet den Fortschritt der Indexbereinigung
  • Die System-View pg_wait_events wurde hinzugefügt und liefert in Kombination mit pg_stat_activity Einblicke in die Gründe, warum aktive Sessions warten

1 Kommentare

 
GN⁺ 2024-09-27
Hacker-News-Kommentare
  • Glückwünsche zur neuen Veröffentlichung von PostgreSQL 17 sowie Hinweise auf mehrere Verbesserungen

    • Verbesserte Speicherstruktur bei Vacuum-Vorgängen, wodurch sich der Speicherverbrauch um bis zu das 20-Fache reduziert
    • Unterstützung für inkrementelle Backups im Backup-Utility pg_basebackup sowie das neue Utility pg_combinebackup
    • Verbesserungen bei Foreign Data Wrappers (FDW), sodass EXISTS- und IN-Subqueries auf Remote-Servern verarbeitet werden können
  • Meinungen zur Nützlichkeit der JSON-Funktionen

    • Hervorhebung der Nützlichkeit von JSON-Funktionen in relationalen Datenbanken
    • Erwähnung der Bedeutung von Funktionen, mit denen sich JSON aus Daten erzeugen lässt
    • Vorfreude darauf, die JSON_TABLE-Funktion kennenzulernen
  • Geteilte Erfahrungen mit der Nutzung der JSON_TABLE-Funktion

    • Betonung des Nutzens, JSON-Antworten in einer jsonb-Spalte zu speichern und sie über Views zu parsen
    • Freude darüber, diesen Ansatz in der Dokumentation zu den neuen PostgreSQL-Funktionen wiederzufinden
  • Hinweis auf Leistungssteigerungen und UX-Verbesserungen in PostgreSQL 17

    • Unterstützung für ID-Spalten und Exclusion Constraints in partitionierten Tabellen
    • Ein neuer plattformunabhängiger und unveränderlicher Sortierungsanbieter gewährleistet konsistente Sortierergebnisse bei textbasierten Abfragen
  • Eindruck vom Changelog

    • Bedauern darüber, dass der UUIDv7-PR nicht enthalten ist
  • Geteilte Erfahrung eines Wechsels von Oracle zu MSSQL aufgrund mangelnden Vertrauens in Open-Source-Software

    • Behauptung eines Vorgesetzten: „Open Source kann man für Business-Software nicht vertrauen“
  • Dank für die kontinuierlichen Verbesserungen an Postgres sowie die Hoffnung auf offizielle Unterstützung für die Erweiterung Incremental View Maintenance (IVM)

  • Erwartungen an die Unterstützung für Upgrades auf neue Hauptversionen von PostgreSQL

  • Hoffnung auf die Einführung systemversionierter Tabellen in Postgres

  • Erwartung, dass die verbesserte JSON-Integration in Postgres ein neues Paradigma für Web-Frameworks ermöglichen wird