Titelbild für PostgreSQL 18: Async-I/O, uuidv7, Generated Columns und warum Entwickler das kennen sollten

Auf einen Blick

Lesezeit

~200 Wörter/Min.

Veröffentlicht

vor 2 Wochen

Jul 27, 2026

Aufrufe

261

Gesamt

PostgreSQL 18: Async-I/O, uuidv7, Generated Columns und warum Entwickler das kennen sollten

PostgreSQL macht weiterhin das, was in der Softwarewelt selten ist: Es wird jedes Jahr besser, ohne schlechter zu werden. Version 18 ist ein gehaltvolles Release, und ungewöhnlich für ein Datenbank-Upgrade sind mehrere der wichtigsten Neuerungen Dinge, die Anwendungsentwickler: nicht nur DBAs: tatsächlich spüren werden. Ein neues asynchrones I/O-Subsystem, ein eingebauter Generator für zeitlich geordnete UUIDs, flexiblere generierte Spalten und intelligentere Indizierung adressieren jeweils echte, alltägliche Probleme. Dieser Leitfaden führt durch die Änderungen, die für diejenigen relevant sind, die die Abfragen schreiben, und warum sich ein Upgrade lohnt.

Die Änderungen, die Entwickler tatsächlich spüren werden

  • Asynchrones I/O für schnellere Lesevorgänge bei leseintensiven Workloads
  • Eingebaute uuidv7()-Funktion für zeitlich geordnete UUIDs, die gut indizierbar sind
  • Virtuelle generierte Spalten, die beim Lesen berechnet werden
  • Skip Scan, der mehr Abfragen die Nutzung mehrspaltiger Indizes ermöglicht
  • Ein reibungsloserer Upgrade-Pfad für Hauptversionen
i

Info

Warum ein Datenbank-Release Ihre Aufmerksamkeit verdient

Die Performance einer Anwendung ist oft im Kern Datenbank-Performance. Funktionen, die Lesevorgänge beschleunigen, Schlüssel besser indizierbar machen und Indizes auf mehr Abfragen anwendbar machen, führen direkt zu reaktionsschnelleren Apps, ohne dass Sie Anwendungscode umschreiben müssen. Überprüfen Sie die Einzelheiten stets anhand der offiziellen PostgreSQL-18-Release-Notes für Ihre Plattform.

Asynchrones I/O: schnellere Lesevorgänge unter Last

Bisher führte PostgreSQL Festplattenlesevorgänge einzeln aus und wartete auf jeden einzelnen: bei schnellem Speicher mit kleinen Working Sets in Ordnung, weniger jedoch, wenn eine Abfrage viele Seiten abrufen muss, die nicht im Cache liegen. Version 18 führt ein asynchrones I/O-Subsystem ein, das es der Datenbank erlaubt, mehrere Leseanfragen gleichzeitig zu stellen, sodass sie weniger Zeit mit Warten auf den Speicher verbringt. Für leseintensive Workloads, große Scans und analytische Abfragen kann dies den Durchsatz spürbar verbessern, insbesondere wenn die Daten nicht vollständig in den Arbeitsspeicher passen.

💡

Tipp

Der Gewinn ist am größten, wo Sie I/O-gebunden waren

Wenn Ihr Workload bereits in den RAM passt, werden Sie weniger bemerken. Die größten Vorteile ergeben sich bei großen Tabellen, großen sequenziellen oder Bitmap-Scans und Abfragen, die zuvor durch Warten auf die Festplatte ausgebremst wurden. Messen Sie wie immer mit Ihren eigenen Daten, statt Annahmen zu treffen.

uuidv7(): der richtige Weg für UUID-Schlüssel

Entwickler lieben UUIDs als Primärschlüssel: global eindeutig, clientseitig generierbar, keine zentrale Sequenz. Aber herkömmliche zufällige UUIDs (v4) haben einen unangenehmen Nebeneffekt: Da sie zufällig sind, verteilt das Einfügen die Schreibvorgänge über den gesamten Index, was mit wachsenden Tabellen zu Fragmentierung und schlechtem Cache-Verhalten führt. UUIDv7 behebt dies, indem es einen Zeitstempel einbettet, sodass die Werte zeitlich geordnet sind: Neue Zeilen gruppieren sich im Index ähnlich wie bei automatisch inkrementierenden Ganzzahlen, während die UUID-Eindeutigkeit erhalten bleibt. PostgreSQL 18 fügt eine eingebaute Funktion hinzu, sodass Sie keine Erweiterung oder clientseitige Bibliothek mehr benötigen, um sie zu erhalten.uuidv7() Funktion, sodass Sie keine Erweiterung oder clientseitige Bibliothek mehr benötigen, um sie zu erhalten.

-- Time-ordered UUID keys, built in — unique AND index-friendly.
CREATE TABLE orders (
    id          uuid PRIMARY KEY DEFAULT uuidv7(),
    customer_id bigint NOT NULL,
    created_at  timestamptz NOT NULL DEFAULT now()
);

-- New rows cluster at the "end" of the index like serial ids,
-- avoiding the write scattering that random uuidv4 causes.
💡

Profi-Tipp

Wenn Sie UUID-Primärschlüssel für eine neue Tabelle unter PostgreSQL 18 wählen, bevorzugen Sie uuidv7() gegenüber zufälligem v4. Sie behalten alle Vorteile von UUIDs und vermeiden gleichzeitig die Indexfragmentierung und die Verlangsamung von Einfügevorgängen, die zufällige UUIDs bei großen, schreibintensiven Tabellen verursachen. Das ist fast ein geschenkter Gewinn.

Werbung

Generierte Spalten werden flexibler

Generierte Spalten lassen die Datenbank eine Spalte automatisch aus anderen Spalten berechnen. Bisher unterstützte PostgreSQL nur gespeicherte generierte Spalten: der Wert wird beim Schreiben berechnet und auf der Festplatte gespeichert. Version 18 führt virtuelle generierte Spalten ein, die bei Bedarf beim Lesen berechnet werden, sodass sie keinen Speicherplatz kosten und nie veralten. Das ist ideal für abgeleitete Werte, die Sie wie eine normale Spalte abfragen möchten, aber nicht physisch persistieren wollen.

CREATE TABLE products (
    price_cents   int  NOT NULL,
    tax_rate      numeric NOT NULL,
    -- computed on read: no storage, always current with its inputs
    total_cents   int GENERATED ALWAYS AS
                  (price_cents + round(price_cents * tax_rate)) VIRTUAL
);

Vorteile

  • Virtuelle Spalten: abgeleitete Werte ohne Speicherkosten
  • Berechnete Werte wie gewöhnliche Spalten abfragen: saubererer Anwendungscode
  • Gespeicherte Spalten weiterhin verfügbar, wenn Sie vorberechnete Werte wünschen
  • Die Logik lebt im Schema, nicht verstreut über jede Abfrage

Nachteile

  • Virtuelle Werte werden bei jedem Lesevorgang neu berechnet: wägen Sie Lese- gegen Schreibkosten ab
  • Komplexe Ausdrücke verlagern Arbeit in die Datenbank; profilen Sie sie
  • Verhalten und Voreinstellungen unterscheiden sich von gespeicherten Spalten: lesen Sie die Dokumentation
  • Kein Ersatz für eine ordentliche Indizierung häufig gefilterter Werte

Skip Scan: mehr Abfragen nutzen Ihre Indizes

Ein klassischer Fallstrick: Sie haben einen mehrspaltigen Index auf (a, b), aber eine Abfrage filtert nur nach b, sodass PostgreSQL den Index nicht effizient nutzen kann und auf einen langsameren Scan zurückfällt. Version 18 verbessert dies mit Skip Scan, der es dem Planer erlaubt, einen solchen Index auch dann zu verwenden, wenn die führende Spalte nicht eingeschränkt ist, indem er effektiv durch deren unterschiedliche Werte „springt“. Der praktische Effekt ist, dass mehr Ihrer bestehenden Abfragen auf bereits vorhandene Indizes zurückgreifen können, ohne dass Sie neue hinzufügen müssen.

Warnung

Hilfreich, aber kein Grund, nicht mehr über Indizes nachzudenken

Skip Scan erweitert die Anwendbarkeit bestehender mehrspaltiger Indizes: ein echter Gewinn -, macht aber das Indexdesign nicht irrelevant. Indizes auf Ihre tatsächlichen Abfragemuster hin zu entwerfen, bleibt wichtig. Betrachten Sie Skip Scan als Sicherheitsnetz, das mehr Fälle abfängt, nicht als Ersatz für das Verständnis Ihrer Zugriffsmuster.

Ein reibungsloserer Upgrade-Pfad

Große PostgreSQL-Upgrades hatten lange einen versteckten Preis: Nach dem Upgrade wurden die Statistiken des Abfrageplaners nicht übernommen, sodass das frisch aktualisierte System mit schlechten Plänen arbeiten konnte, bis diese Statistiken neu aufgebaut waren: manchmal ein unangenehmer Leistungseinbruch genau dann, wenn man ihn am wenigsten gebrauchen kann. Version 18 verbessert diesen Bereich, sodass Upgrades seltener zu einer vorübergehend langsamen Datenbank führen und das Risiko sowie den Stress eines Major-Versionswechsels verringern.

Lesevorgänge

sind der Bereich, in dem die meisten Anwendungen die Datenbank spüren: und Version 18 zielt genau darauf ab

Werbung

Sollten Sie upgraden?

1

Neue Projekte

Beginnen Sie mit Version 18. Sie erhalten uuidv7(), asynchrone I/O und virtuelle generierte Spalten von Anfang an, ohne Migrationsaufwand.

2

Leseintensive oder I/O-gebundene Anwendungen

Allein die Verbesserungen bei asynchroner I/O können den Umstieg rechtfertigen: messen Sie Ihre tatsächliche Arbeitslast, um den Gewinn zu beziffern.

3

Schreibintensive Anwendungen mit UUID-Schlüsseln

Die Migration neuer Tabellen auf uuidv7() kann Index-Blähungen reduzieren und die Einfügeleistung bei wachsendem Datenvolumen verbessern.

4

Jede Produktivdatenbank

Testen Sie zuerst an einer Kopie, prüfen Sie die Unterstützung der Erweiterungen für Version 18 und proben Sie das Upgrade: die verbesserte Statistiken-Behandlung hilft, aber Vorsicht bleibt angebracht.

! Häufige Fehler, die es zu vermeiden gilt

  • Zufällige uuidv4 als Primärschlüssel in großen Tabellen verwenden.

    Bevorzugen Sie das eingebaute uuidv7(): zeitlich geordnete Werte vermeiden die Indexfragmentierung, die v4 verursacht.

  • Annehmen, dass asynchrone I/O jeder Arbeitslast hilft.

    Die Vorteile zeigen sich bei lese- und I/O-gebundenen Abfragen; wenn Ihre Daten in den Arbeitsspeicher passen, werden Sie weniger bemerken.

  • Skip Scan als Grund betrachten, keine Indizes mehr zu entwerfen.

    Er erweitert die Anwendbarkeit vorhandener Indizes, aber das Indexdesign anhand realer Abfragemuster bleibt wichtig.

  • Produktivumgebung ohne getestete Probe upgraden.

    Testen Sie an einer Kopie, prüfen Sie die Unterstützung der Erweiterungen für Version 18 und proben Sie das Upgrade: auch mit der verbesserten Statistiken-Behandlung.

? Häufig gestellte Fragen

Warum sollten Entwickler sich für PostgreSQL 18 interessieren? +

Mehrere herausragende Funktionen kommen direkt bei Entwicklern an: asynchrone I/O für schnellere Lesevorgänge, eingebaute zeitlich geordnete uuidv7()-Schlüssel, virtuelle generierte Spalten und Skip Scan, sodass mehr Abfragen vorhandene Indizes nutzen.

Was ist uuidv7 und warum sollte man es uuidv4 vorziehen? +

UUIDv7 bettet einen Zeitstempel ein, sodass die Werte zeitlich geordnet sind und sich im Index ähnlich wie fortlaufende IDs gruppieren. So werden die Streuung beim Schreiben und die Fragmentierung vermieden, die zufälliges UUIDv4 bei großen, schreibintensiven Tabellen verursacht.

Was sind virtuelle generierte Spalten? +

Spalten, die beim Lesen berechnet statt beim Schreiben gespeichert werden: sie verbrauchen keinen Speicherplatz und veralten nie, ideal für abgeleitete Werte, die Sie wie normale Spalten abfragen möchten, ohne sie zu persistieren.

Was verbessert asynchrone I/O? +

Sie ermöglicht PostgreSQL, mehrere Leseanfragen gleichzeitig zu bearbeiten, anstatt auf jede einzelne zu warten. Das verbessert den Durchsatz bei leseintensiven Arbeitslasten, großen Scans und Daten, die nicht in den Arbeitsspeicher passen.

Ist ein Upgrade auf Version 18 riskant? +

Weniger als zuvor: Verbesserungen reduzieren den Leistungseinbruch nach dem Upgrade durch fehlende Planerstatistiken. Testen Sie dennoch an einer Kopie, prüfen Sie die Unterstützung der Erweiterungen und proben Sie das Upgrade.

Erfolg

Ein wirklich entwicklerfreundliches Release

PostgreSQL 18 ist ungewöhnlich, weil so viel Wert direkt bei Entwicklern ankommt: schnellere Lesevorgänge, bessere UUID-Schlüssel, speicherplatzfreie abgeleitete Spalten und Indizes, die für mehr Abfragen greifen. Setzen Sie es ohne Zögern für neue Projekte ein, planen Sie ein getestetes Upgrade für bestehende Systeme und nutzen Sie uuidv7() und virtuelle Spalten, sobald Sie auf Version 18 sind.

Bishrul Haq

Written by

Bishrul Haq

Software engineer writing practical tutorials on Laravel, PHP, Python, and the tools behind real projects. More about me

Newsletter

Want more posts like this?

Get practical software notes and tutorials delivered when something new is published.

Kein Spam. Jederzeit abbestellbar.

Wie fandest du den Beitrag?

Kommentare

0
Anmelden oder Registrieren um mitzudiskutieren und auf diesen Beitrag zu reagieren.

Noch keine Kommentare. Teile als Erste oder Erster deine Gedanken.

Related posts

Wichtige Sortieralgorithmen für Informatikstudenten

Algorithmen werden üblicherweise in Informatik- und Softwareentwicklungsstudiengängen im Bachelor oder Master gelehrt. Manchen fällt das Verständnis schwer, weil sie auf Auswendiglernen setzen.

vor 6 Jahren

GraphQL in Laravel mit Lighthouse

In der modernen Webentwicklung hat sich GraphQL aufgrund seiner Flexibilität und Effizienz als leistungsstarke Alternative zu REST-APIs etabliert.

vor 1 Jahr

Moderne reaktive Benutzeroberflächen mit Laravel 12 und Livewire 4: Ein Leitfaden für die Praxis

Ein produktionsreifer Durchlauf von Livewire 4 in Laravel 12: Formularobjekte, Lazy Components, Alpine-Interop, Dateiuploads, Pest-Tests und die Fallstricke beim Deployment, vor denen niemand warnt.

vor 2 Monaten

Leistungsstarke Admin-Panels mit Laravel 12 und Filament v5: Ein Produktionsleitfaden

Liefern Sie ein echtes Filament-v5-Admin-Panel auf Laravel 12 aus: Ressourcen, RBAC mit Spatie, Multi-Tenancy, benutzerdefinierte Widgets und eine Deployment-Checkliste für Teams, die über Hello-World hinausgehen.

vor 2 Monaten

Laravel 12 mit Octane und FrankenPHP skalieren: Ein Leitfaden für Produktions-Performance

Latenz von Laravel 12 mit Octane und FrankenPHP mehr als halbieren: installieren, konfigurieren, Singletons prüfen und Benchmarks durchführen, inklusive der Produktionsfallen, die Teams in Woche zwei erwischen.

vor 2 Monaten