Am 24. September gab das Entwicklerteam die Veröffentlichung der neuesten Version von Postgresql mit der Nummer 13 bekannt. In diesem Release lag der Schwerpunkt unter anderem auf der Verbesserung der Leistung, der Beschleunigung interner Wartungsdienste und der Vereinfachung der Datenbanküberwachung sowie einer zuverlässigeren Zugriffskontrolle auf das System.
Die Arbeit an der Optimierung der Indizierung von Tabellen in Bezug auf die Verarbeitung von Duplikaten unter den indizierten Daten in binären Indexbäumen wurde fortgeführt, was nicht nur die Ausführung von Abfragen beschleunigte, sondern auch den Platzbedarf des Index auf der Festplatte reduzierte.
Darüber hinaus wurde ein Algorithmus für die inkrementelle Sortierung hinzugefügt, bei dem die erneute Sortierung von bereits in früheren Schritten sortierten Daten schneller verläuft und für einige Abfragen eine Beschleunigung erzielt werden kann, indem neue erweiterte Statistiken (über den Befehl CREATE STATISTICS) zur Berechnung eines effektiveren schrittweisen Plans verwendet werden.
Auch die Ausführung von Abfragen mit kostenintensiver Datenaggregation wurde optimiert, indem die Verwendung von gehashten Aggregationen und das Ablegen eines Teils der aggregierten Daten auf der Festplatte ermöglicht wurde, wenn sie nicht in den Arbeitsspeicher passen. Es wird ein erheblicher Geschwindigkeitsschub beim Verknüpfen von Tabellen verzeichnet, die sich auf unterschiedlichen Partitionen befinden.
Es wurde auch viel Arbeit in die Vereinfachung der Wartung und Administration von Postgresql-Datenbanken investiert. Die eingebaute Aufgabe "Vakuumieren", also die Nutzung des freigewordenen Speicherplatzes nach dem Löschen oder Überschreiben von Zeilen, kann nun in parallelen Threads durchgeführt werden, wobei der Administrator die Anzahl der Threads angeben kann. Darüber hinaus wurden neue Überwachungswerkzeuge für die aktuelle Aktivität der Datenbank hinzugefügt und Fehler bei der Synchronisierung der Write-Ahead-Logs zwischen dem Master und den Replikaten wurden verhindert, die zu Konflikten beim Herunterfahren der Replikate führen oder die Integrität der verteilten Datenbank nach deren Wiederherstellung aus den Logdaten gefährden konnten.
Unter den Neuerungen für Entwickler sticht die Funktion datetime() hervor, die verschiedene Standardformate der Zeitdarstellung in den eingebauten Postgresql-Typ umwandelt; die sofort einsatzbereite UUID v4 gen_random_uuid() Funktion zur Generierung von UUIDs; die Normalisierung des Umgangs mit Unicode; ein flexibleres System zur Verteilung von Tabellendaten auf vernetzten Datenbankknoten mit vollständiger Replikation auf logischer Ebene sowie weitere Änderungen an Abfragen und neuen, für Replikate verfügbaren Triggern.
Der Zugriffskontrolle auf die Datenbank wird als einer der Schlüsselkomponenten des Systems angesehen, und in der neuen Version wurden große Fortschritte in diesem Bereich erzielt. Die Installation von Erweiterungen zur Datenbank kann jetzt nur von privilegierten Benutzern (Superuser) durchgeführt werden. Standardbenutzer können nur die Erweiterungen installieren, die sie als vertrauenswürdig gekennzeichnet haben, oder eine kleine Auswahl von Erweiterungen, die standardmäßig als vertrauenswürdig gelten (z. B. pgcrypto, tablefunc oder hstore). Bei der Benutzerauthentifizierung über das SCRAM-Mechanismus (bei der Arbeit mit dem libpq-Treiber) ist nun eine 'Kanalbindung' erforderlich, und die Wrapper-Funktion für externe Daten postgres_fdw unterstützt seit Version 13 Zertifikatsauthentifizierung.
Quelle: linux.org.ru
