Nach einem Jahr Entwicklung wurde der neue stabile Zweig der Datenbank PostgreSQL 15 veröffentlicht. Updates für den neuen Zweig werden über einen Zeitraum von fünf Jahren bis November 2027 bereitgestellt.
Hauptneuheiten:
- Die Unterstützung des SQL-Befehls „MERGE“ wurde hinzugefügt, der dem Ausdruck „INSERT … ON CONFLICT“ ähnelt. MERGE ermöglicht das Erstellen bedingter SQL-Ausdrücke, die die Operationen INSERT, UPDATE und DELETE in einer einzigen Anweisung kombinieren. Zum Beispiel kann mit MERGE das Zusammenführen von zwei Tabellen organisiert werden, indem fehlende Datensätze eingefügt und vorhandene aktualisiert werden. MERGE INTO customer_account ca USING recent_transactions t ON t.customer_id = ca.customer_id WHEN MATCHED THEN UPDATE SET balance = balance + transaction_value WHEN NOT MATCHED THEN INSERT (customer_id, balance) VALUES (t.customer_id, t.transaction_value);
- Die Algorithmen zum Sortieren von Daten im Speicher und auf der Festplatte wurden erheblich verbessert. Je nach Datentyp wurde in Tests eine Steigerung der Sortiergeschwindigkeit um 25% bis zu 400% festgestellt.
- Die Leistung von Fensterfunktionen mit row_number(), rank(), dense_rank() und count() wurde beschleunigt.
- Die Möglichkeit zur parallelen Ausführung von Anfragen mit dem Ausdruck „SELECT DISTINCT“ wurde implementiert.
- Im Mechanismus zur Verbindung externer Tabellen Foreign Data Wrapper (postgres_fdw) wurde die Unterstützung für asynchrone Commits in Ergänzung zur bereits zuvor hinzugefügten Möglichkeit der asynchronen Verarbeitung von Anfragen an externe Server implementiert.
- Die Möglichkeit zur Anwendung von LZ4- und Zstandard (zstd)-Algorithmen für die Komprimierung von WAL-Transaktionsprotokollen wurde hinzugefügt, was bei bestimmten Lasten sowohl die Leistung erhöht als auch Speicherplatz spart. Zur Verkürzung der Wiederherstellungszeit nach einem Ausfall wurde die Unterstützung für proaktives Abrufen von Seiten, die im WAL-Protokoll auftauchen, hinzugefügt.
- In das Tool pg_basebackup wurde die Unterstützung für die Komprimierung von Dateien mit Sicherungen auf der Serverseite hinzugefügt, indem die Methoden gzip, LZ4 oder zstd genutzt werden. Es wurde die Möglichkeit geschaffen, eigene Archivierungs-Module zu verwenden, um auf das Ausführen von Shell-Befehlen verzichten zu können. ServerEine Reihe neuer Funktionen zur Verarbeitung von Zeichenfolgen mit regulären Ausdrücken wurde hinzugefügt: regexp_count(), regexp_instr(), regexp_like() und regexp_substr().
- In die Funktion range_agg() wurde die Möglichkeit zur Aggregierung von mehrdimensionalen Typen („multirange“) eingeführt.
- Ein Modus security_invoker wurde hinzugefügt, der die Erstellung von Sichten ermöglicht, die mit den Rechten des aufrufenden Benutzers und nicht des Erstellers der Sicht ausgeführt werden.
- Ein Modus security_invoker wurde hinzugefügt, der die Erstellung von Sichten ermöglicht, die mit den Rechten des aufrufenden Benutzers und nicht des Erstellers der Sicht ausgeführt werden.
- Für die logische Replikation wurde die Unterstützung für die Filterung von Zeilen und die Festlegung von Spaltenlisten implementiert, die es dem Sender ermöglichen, eine Datenmenge zur Replikation aus einer Tabelle auszuwählen. Darüber hinaus wurde die Handhabung von Konflikten in der neuen Version vereinfacht, beispielsweise wurde die Möglichkeit eingeführt, konfliktbehaftete Transaktionen zu überspringen und die Abonnierung bei einem Fehler automatisch zu deaktivieren. Bei der logischen Replikation ist die Verwendung von zweiphasigen Commit-Prozessen (2PC) erlaubt.
- Ein neues Protokollformat — jsonlog — wurde hinzugefügt, das Informationen in strukturierter Form im JSON-Format speichert.
- Der Administrator hat die Möglichkeit, bestimmten Benutzern das Delegieren von Befugnissen zur Änderung bestimmter Parameter zu gewähren. Serverkonfiguration hinzugefügt. PostgreSQL.
- Die psql-Anwendung hat die Unterstützung für die Suche nach Informationen zu den Einstellungen (pg_settings) mit dem Befehl „\dconfig“ erhalten.
- Es wird die Verwendung von Shared Memory zur Speicherung von Statistiken über die Serverleistung sichergestellt, was es ermöglicht hat, einen separaten Prozess zur Statistiksammlung und das periodische Zurückschreiben von Status auf die Festplatte zu eliminieren.
- Die Möglichkeit wurde eingeführt, standardmäßig ICU-Lokalisierungen „ICU Collation“ zu verwenden; zuvor konnte nur die libc-Lokalisierung als Standardlokalisierung verwendet werden.
- Ein eingebautes Erweiterungspaket pg_walinspect wurde vorgeschlagen, das es ermöglicht, den Inhalt von WAL-Logdateien mit SQL-Abfragen zu inspizieren.
- Für das Schema public wurden allen Benutzern, mit Ausnahme des Datenbankinhabers, die Berechtigungen zum Ausführen des Befehls CREATE entzogen.
- In PL/Python wurde die Unterstützung von Python 2 entfernt. Der veraltete exklusive Backup-Modus („exclusive backup“) wurde ebenfalls entfernt.
Zusatz: Von 19:00 bis 20:00 (MSK) findet ein Webinar zur Diskussion über die Änderungen der neuen Version mit Pawel Luzanov (Postgres Professional) statt. Für alle, die nicht am Live-Stream teilnehmen können, ist die Aufzeichnung von Pawels Juni-Vortrag „PostgreSQL 15: MERGE und mehr“ auf PGConf.Russia verfügbar.
Quelle: opennet.ru
