PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Die besten neuen Funktionen in PostgreSQL 14

Laut StackOverflow ist PostgreSQL die beliebteste Open-Source-Datenbank, mit der immer mehr Entwickler und Administratoren arbeiten wollen. PostgreSQL 14, die neueste Version, die im September 2021 veröffentlicht wurde, verfügt über mehr als 200 Verbesserungen und neue Funktionen, die grob in drei Bereiche fallen:Sicherheit, Leistung und Überwachung.

Ab Version 1.9.2, die Anfang dieses Jahres veröffentlicht wurde, unterstützt ClusterControl jetzt die neueste Version von PostgreSQL 14.

In diesem Beitrag werden wir uns die bemerkenswertesten Funktionen, wichtigsten Updates und Verbesserungen ansehen, die in PostgreSQL 14 verfügbar sind.

Sicherheit

Die bedeutendste Sicherheitsänderung von PostgreSQL 14 ist die Umstellung auf SCRAM als Standardauthentifizierung, nachdem die SCRAM-SHA-256-Authentifizierung erstmals in PostgreSQL 10 eingeführt wurde.  SCRAM bietet eine viel einfachere und leistungsfähigere Lösung zur Regulierung der Compliance für Daten Sicherheit. Die vorherige standardmäßige MD5-Authentifizierung hatte in der Vergangenheit einige ausgenutzte Schwachstellen.

Neben der verbesserten Authentifizierung vereinfacht PostgreSQL 14 den Prozess der Zuweisung von Nur-Schreiben- und Nur-Lesen-Fähigkeiten zu Benutzern für Tabellen, Ansichten und Schemata durch die Einführung von zwei vordefinierten Rollen, pg_write_all_data und pg_read_all_data. Die erstere Rolle macht es bequem, Berechtigungen im Superuser-Stil zu erstellen. Obwohl diese Art von Konto für Aktivitäten und Zugriff bequem ist, muss es sparsam verwendet werden. Die letztere Rolle ist praktisch, um einem Benutzer schreibgeschützten Zugriff auf alle Tabellen, Schemas und Ansichten in der Datenbank zu gewähren. Diese Rolle hat standardmäßig Lesezugriff auf alle neu erstellten Tabellen.

Leistung

Unternehmen verarbeiten immer mehr Daten, und die Geschwindigkeit, das Volumen und die Vielfalt (die drei Vs von Big Data) zeigen keine Anzeichen einer Verlangsamung. PostgreSQL 14 hat einige sehr bedeutende Änderungen vorgenommen, um eine Skalierung nach oben und unten zu ermöglichen, um diese Workloads zu unterstützen und die Leistung zu verbessern. Dies lässt sich am besten in die folgenden fünf Bereiche einteilen:

Skalierbarkeit und Leistung

PostgreSQL 14 liefert enorme Errungenschaften bei der Leistung von Löschungen und Aktualisierungen auf Tabellen mit einer hohen Anzahl von Partitionen. Dadurch können Löschungen und Aktualisierungen auf partitionierten Tabellen die Partitionsbereinigung zur Ausführungszeit verwenden. Am wichtigsten ist, dass diese Version auf mehr Partitionen als zuvor skaliert werden kann, wodurch PostgreSQL mit viel größeren Datenbanken umgehen kann, als dies zuvor möglich war.

In PostgreSQL Version 14 können Partitionen jetzt auch gleichzeitig getrennt werden, was die Verwaltung großer Zeitreihen-Datentabellen vereinfacht. Möglich wird dies durch die neue Funktion date_bin(), mit der Benutzer Zeitreihendaten besser und einfacher in Datumsbereichen zusammenfassen können.

PostgreSQL 14 hat Unterstützung für die LZ4-Komprimierung für TOAST hinzugefügt. LZ4 verwendet die neueste Komprimierungstechnologie und konzentriert sich auf die Verbesserung der Geschwindigkeit der Dekomprimierung und Komprimierung von Dokumentdaten. LZ4 verbessert Anwendungen mit größeren XML- und JSON-Dokumenten, und dieser Komprimierungsalgorithmus kann sowohl auf System- als auch auf Spaltenebene konfiguriert werden.

Verteilte Datenbanken und Workloads

PostgreSQL 14 bietet auch Verbesserungen bei der horizontalen Skalierung einer Datenbank, indem zwei wichtige Verbesserungen in postgres_fdw (Foreign Data Wrapper) eingeführt werden, die maßgeblich zur Verbesserung der Leistung für verteilte Datenbanken beitragen. Diese Änderungen unterstützen das Masseneinfügen von Daten und parallele Tabellenscans in fremden Tabellen (wenn async_capable gesetzt ist).

Das Zwischenspeichern von Verbindungen verbessert auch die Leistung, indem Verbindungen transaktionsübergreifend geöffnet werden können. Wir können auch den Libpd-Pipelinemodus erwähnen, der die Leistung von verteilten Datenbanken erhöht, indem er ermöglicht, dass Änderungsströme übertragen werden, ohne dass bei jedem Befehl auf eine Netzwerkbestätigung gewartet werden muss.

Verwaltbarkeit 

PostgreSQL 14 befasst sich auch mit dem Problem des aufgeblähten B-Tree-Index; Indizes, die häufig aktualisiert werden, blähen sich im Laufe der Zeit aufgrund toter Tupel auf, die durch Ausführen eines Vakuums entfernt werden können.

Aus diesem Grund kann eine irreversible Seitenteilung durch eine Einfügung oder Aktualisierung verursacht werden, wenn die Seite zwischen Vakuumvorgängen gefüllt wird. Diese Version hat den Vakuumprozess verbessert, indem tote Tupel zwischen Vakuumvorgängen erkannt und entfernt werden (Parameter INDEX_CLEANUP auf Auto gesetzt).

Eine weitere Verbesserung des Vakuumsystems besteht darin, gelöschte Seiten eifrig zu entfernen. In früheren Versionen dauerte das Entfernen gelöschter Seiten zwei Bereinigungszyklen, indem zuerst die Seite als gelöscht markiert wurde und im zweiten Zyklus dieser Speicherplatz tatsächlich freigegeben wurde.

Optimierung der Abfrage- und Indexleistung

Die Indexverwaltung bei der Anwendungsoptimierung ist eine weitere wichtige Verbesserung in PostgreSQL 14. Insbesondere REINDEX CONCURRENTLY und CREATE INDEX CONCURRENTLY ermöglichen die gleichzeitige Ausführung mehrerer Befehle, ohne sich gegenseitig zu stören. Mehr zu Indizes:BRIN-Indizes sind flexibler geworden, da sie zahlreiche Min/Max-Werte pro Bereich aufzeichnen können, was für Wertegruppen in jedem Seitenbereich wertvoll ist. Außerdem arbeiten BRIN-Indizes effektiv mit Daten, die im Heap nicht gut lokalisiert sind, indem Bloom-Filter verwendet werden.

Die FREEZE-Option im COPY-Befehl wurde verbessert, indem die Seitensichtbarkeitsbits zur Datenladeleistung aktualisiert wurden. COPY im Binärmodus ist jetzt auch schneller.

PostgreSQL 14 hat die Abfrageparallelität verfeinert, indem Abfrageparallelität zu REFRESH MATERIALIZED VIEW und RETURN QUERY hinzugefügt wurde. Diese Verbesserungen wurden auf Nested-Loop-Joins und parallele sequentielle Scans ausgeweitet.

PostgreSQL 14 hat die Anzahl der Stellen erhöht, an denen erweiterte Statistiken für die Schätzung von Ausdrücken und OR-Klauseln verwendet werden können. Im Gegensatz zu früher, wo Statistiken nur für Spalten galten, ist sie jetzt für eine Gruppe von Ausdrücken zulässig. Die Systemansicht pg_stats_ext_exprs meldet solche Statistiken.

Erweiterte logische Replikation 

Die logische Replikation wurde verbessert, um das Streamen von lange laufenden Transaktionen über die API oder an Abonnenten zu ermöglichen. In früheren Versionen wurden Transaktionen, die größer als logical_decoding_work_mem waren, auf die Festplatte geschrieben, bis die Transaktion abgeschlossen war, bevor die Transaktion an den Abonnenten repliziert wurde. Mit den neuen Verbesserungen verarbeitet die logische Replikation große Mengen von DDL-Anweisungen effizienter.

Nach jedem Befehl schreibt die logische Replikation Cache-Invalidierungsmeldungen zur Verarbeitung durch Streamen laufender Transaktionen in die WAL. Dieser Prozess schafft erhebliche Leistungsvorteile.

Überwachung 

Eines der größten Schlagworte des Jahres 2022 ist Überwachung, da Administratoren und Entwickler im Laufe der Zeit mehr Einblick in die Leistung wünschen. PostgreSQL 14 hat neue Funktionen eingeführt, um bei der Überwachung zu helfen. Die bedeutendste Änderung von allen ist die Verschiebung des Abfrage-Hash-Systems von pg_stat_statement in die Kerndatenbank. Die Überwachung von Abfragen wurde über mehrere PostgreSQL-Systeme und Protokollierungsfunktionen hinweg unter Verwendung einer einzigen ID zugelassen.

Diese Version hat auch die folgenden neuen Überwachungsparameter eingeführt:

  1. Idle_session_timeout

  2. REINDEX auf Kindindizes einer partitionierten Tabelle

  3. Maintenance_io_concurrency

  4. Pg_stat_progress_copy

  5. Pg_stat_wal

Upgrade auf PostgreSQL 14

Wenn Sie Ihre aktuelle PostgreSQL-Version auf Version 14 aktualisieren möchten, haben Sie drei Hauptoptionen, die diese Aufgabe ausführen:

  1. Pg_dumpall:Es ist ein logisches Sicherungstool, mit dem Sie Ihre Daten sichern und im neuen PostgreSQL wiederherstellen können Ausführung. Hier haben Sie eine Ausfallzeit, die je nach Datengröße variiert. Sie müssen das System stoppen oder neue Daten im primären Knoten vermeiden, pg_dumpall ausführen, den generierten Dump auf den neuen Datenbankknoten verschieben und ihn wiederherstellen. Während dieser Zeit können Sie nicht in Ihre primäre PostgreSQL-Datenbank schreiben, um Dateninkonsistenzen zu vermeiden.

  2. Pg_upgrade:Dies ist ein PostgreSQL-Tool zum Aktualisieren Ihrer PostgreSQL-Version. Es könnte in einer Produktionsumgebung gefährlich sein, und wir empfehlen diese Methode in diesem Fall nicht. Wenn Sie diese Methode verwenden, werden Sie Ausfallzeiten haben, aber sie werden wahrscheinlich wesentlich kürzer sein als die Verwendung der vorherigen pg_dump-Methode.

  3. Logische Replikation:Seit PostgreSQL 10 können Sie diese Replikationsmethode verwenden, die Ihnen dies ermöglicht Führen Sie größere Versions-Upgrades ohne (oder fast ohne) Ausfallzeit durch. Auf diese Weise können Sie in der letzten PostgreSQL-Version einen Standby-Knoten hinzufügen, und wenn die Replikation auf dem neuesten Stand ist, können Sie einen Failover-Prozess durchführen, um den neuen PostgreSQL-Knoten hochzustufen.

Weitere Informationen zu den neuen Funktionen von PostgreSQL 14 finden Sie in der offiziellen Dokumentation.

Abschluss

PostgreSQL 14 hat das Spiel für Benutzer dieser beliebten Open-Source-Datenbank wirklich verbessert. Jetzt haben Entwickler und Administratoren verbesserte Möglichkeiten zur Steigerung der Leistung und Skalierbarkeit, Erweiterungen für verteilte Datenbanken, verbesserte Beobachtbarkeit und mehr.

ClusterControl macht das Upgrade auf die neuesten Technologieversionen einfach und stressfrei. Wenn Sie ClusterControl noch nicht verwenden, können Sie es 30 Tage lang kostenlos testen. Weitere Einzelheiten zur neuesten Version von ClusterControl 1.9.2 finden Sie in den vollständigen Versionshinweisen.

Bleiben Sie auf dem Laufenden mit den neuesten Nachrichten und Best Practices für die beliebtesten Open-Source-Datenbanken, indem Sie uns auf Twitter und LinkedIn folgen und unseren Newsletter abonnieren.