Nach einem Jahr Entwicklung wurde die neue stabile Version der Datenbank PostgreSQL 15 veröffentlicht. Updates für diese Version werden bis November 2027 über fünf Jahre hinweg bereitgestellt.
Hauptneuheiten:
- Die Unterstützung für den SQL-Befehl „MERGE“ wurde hinzugefügt, der dem Ausdruck „INSERT … ON CONFLICT“ ähnelt. MERGE ermöglicht die Erstellung bedingter SQL-Ausdrücke, die INSERT-, UPDATE- und DELETE-Operationen in einem einzigen Ausdruck kombinieren. Beispielsweise kann mit MERGE das Zusammenführen zweier Tabellen organisiert werden, indem fehlende Datensätze eingefügt und bestehende 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 zur Sortierung von Daten im Speicher und auf Disk wurden erheblich verbessert. Abhängig vom Datentyp zeigen die Tests eine Geschwindigkeitssteigerung beim Sortieren von 25 % bis 400 %.
- Die Leistung von Fensterfunktionen mit row_number(), rank(), dense_rank() und count() wurde beschleunigt.
- Die Möglichkeit zur parallelen Ausführung von Abfragen mit dem Ausdruck „SELECT DISTINCT“ wurde implementiert.
- Im Mechanismus für die Anbindung von externen Tabellen über Foreign Data Wrapper (postgres_fdw) wurde die Unterstützung von asynchronen Kommissionierungen eingeführt, zusätzlich zu der vorher bereits hinzugefügten Möglichkeit der asynchronen Verarbeitung von Anfragen an externe Server.
- Die Möglichkeit zur Anwendung der Algorithmen LZ4 und Zstandard (zstd) zur Kompression von WAL-Logs für Transaktionen wurde hinzugefügt, wodurch unter bestimmten Lasten die Leistung gesteigert und der Speicherplatz gespart werden kann. Zur Verkürzung der Wiederherstellungszeit nach einem Ausfall wurde die Unterstützung für das vorzeitige Abrufen von Seiten, die im WAL-Log erscheinen, hinzugefügt.
- Im Tool pg_basebackup wurde die Unterstützung für die Kompression von Backup-Dateien auf der Serverseite hinzugefügt, Server, unter Verwendung der Methoden gzip, LZ4 oder zstd. Außerdem besteht die Möglichkeit zur Nutzung eigener Module zur Archivierung, wodurch das Ausführen von Shell-Befehlen entfällt.
- Eine 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 Mehrbereichs-Typen („multirange“) eingeführt.
- Der Modus security_invoker wurde hinzugefügt, der es ermöglicht, Ansichten zu erstellen, die mit den Rechten des aufrufenden Benutzers und nicht des Erstellers der Ansicht ausgeführt werden.
- Für die logische Replikation wurde die Unterstützung für Zeilenfilterung und die Angabe von Spaltenlisten implementiert, die es dem Sender ermöglichen, eine Teilmenge von Daten aus einer Tabelle für die Replikation auszuwählen. Darüber hinaus wurde in der neuen Version das Management von Konflikten vereinfacht, zum Beispiel gibt es jetzt die Möglichkeit, konfligierende Transaktionen zu überspringen und die Abonnements automatisch zu deaktivieren, wenn ein Fehler erkannt wird. Bei der logischen Replikation ist die Verwendung von Zwei-Phasen-Commits (2PC) erlaubt.
- Ein neues Log-Format — jsonlog — wurde hinzugefügt, das Informationen in strukturierter Form unter Verwendung des JSON-Formats speichert.
- Dem Administrator wurde die Möglichkeit gegeben, einzelnen Benutzern bestimmte Berechtigungen zur Änderung definierter Parameter zu delegieren. Serverkonfiguration. PostgreSQL.
- Im Tool psql wurde die Unterstützung zur Suche nach Informationen zu den Einstellungen (pg_settings) mit dem Befehl „\dconfig“ hinzugefügt.
- Die Nutzung von gemeinsamem Speicher zur Sammlung von Serverstatistiken wurde ermöglicht, wodurch ein separater Prozess zur Statistiksammlung und zur regelmäßigen Speicherung auf die Festplatte überflüssig wurde.
- Standardmäßig stehen nun ICU-Lokalisierungen für die "ICU Collation" zur Verfügung; zuvor war als Standardlokalisierung nur die libc-Lokalisierung verwendbar.
- Ein integriertes pg_walinspect-Erweiterung wurde bereitgestellt, das es ermöglicht, den Inhalt von WAL-Logdateien mittels SQL-Abfragen zu inspizieren.
- Für das Schema public wurde allen Benutzern, außer dem Datenbankbesitzer, das Recht zur Ausführung des CREATE-Befehls entzogen.
- In PL/Python wurde die Unterstützung für Python 2 entfernt. Der veraltete exklusive Backup-Modus wurde entfernt.
Zusatz: Von 19:00 bis 20:00 Uhr (MSK) findet ein Webinar zur Diskussion der Änderungen der neuen Version mit Pavel Luzanov (Postgres Professional) statt. Für alle, die nicht live teilnehmen können, steht die Aufzeichnung von Pavels Juni-Vortrag "PostgreSQL 15: MERGE und mehr" auf PGConf.Russia zur Verfügung.
Quelle: opennet.ru
