PostgreSQL 12-Veröffentlichung

Das PostgreSQL-Team hat die Veröffentlichung von PostgreSQL 12 angekündigt, der neuesten Version des relationalen Open-Source-Datenbankverwaltungssystems.
PostgreSQL 12 hat die Abfrageleistung – insbesondere bei der Arbeit mit großen Datenmengen – deutlich verbessert und auch die Nutzung des Festplattenspeichers insgesamt optimiert.

Zu den neuen Funktionen gehören:

  • Implementierung der JSON Path-Abfragesprache (der wichtigste Teil des SQL/JSON-Standards);
  • Optimierung der Ausführung allgemeiner Tabellenausdrücke (WITH);
  • Unterstützung für generierte Spalten

Die Community arbeitet außerdem weiterhin an der Erweiterbarkeit und Zuverlässigkeit von PostgreSQL, entwickelt Unterstützung für Internationalisierung, Authentifizierungsfunktionen und bietet einfachere Möglichkeiten zur Verwaltung des Systems.

Diese Version umfasst die Implementierung einer Schnittstelle für steckbare Speicher-Engines, die es Entwicklern nun ermöglicht, ihre eigenen Datenspeichermethoden zu erstellen.

Leistungsverbesserungen

PostgreSQL 12 enthält erhebliche Leistungs- und Wartungsverbesserungen für Indexierungs- und Partitionierungssysteme.

B-Tree-Indizes, der Standard-Indizierungstyp in PostgreSQL, wurden in Version 12 für Arbeitslasten optimiert, die häufige Indexänderungen erfordern. Die Verwendung des TPC-C-Benchmarks für PostgreSQL 12 zeigte eine durchschnittliche Reduzierung der Speicherplatznutzung um 40 % und eine allgemeine Steigerung der Abfrageleistung.

Abfragen für partitionierte Tabellen haben spürbare Verbesserungen erfahren, insbesondere für Tabellen, die aus Tausenden von Partitionen bestehen, die nur mit begrenzten Teilen der Datenarrays arbeiten müssen. Die Leistung beim Hinzufügen von Daten zu partitionierten Tabellen mithilfe von INSERT und COPY wurde verbessert, ebenso wie die Möglichkeit, eine neue Partition anzuhängen, ohne Abfragen zu blockieren.

PostgreSQL 12 hat zusätzliche Verbesserungen an der Indizierung vorgenommen, die sich auf die Gesamtleistung auswirken, darunter:

  • Reduzierter Overhead beim Generieren von WAL für GiST-, GIN- und SP-GiST-Indextypen;
  • die Möglichkeit, sogenannte Covering-Indizes (INCLUDE-Klausel) für GiST-Indizes zu erstellen;
  • die Fähigkeit, Abfragen zum „nächsten Nachbarn“ (k-NN-Suche) mithilfe des Distanzoperators (<->) und mithilfe von SP-GiST-Indizes durchzuführen;
  • Unterstützung für das Sammeln von MCV-Statistiken (Most Common Value) mithilfe von CREATE STATISTICS, was dazu beiträgt, bessere Abfragepläne zu erhalten, wenn Spalten verwendet werden, deren Werte ungleichmäßig verteilt sind.

Die in PostgreSQL 11 eingeführte JIT-Kompilierung mit LLVM ist jetzt standardmäßig aktiviert. Die JIT-Kompilierung verbessert die Leistung beim Arbeiten mit Ausdrücken in WHERE-Klauseln, Ziellisten, Aggregaten und einigen internen Vorgängen. Es ist verfügbar, wenn Sie PostgreSQL mit LLVM kompiliert haben oder ein PostgreSQL-Paket verwenden, das mit aktiviertem LLVM erstellt wurde.

Verbesserungen der SQL-Sprachfunktionen und der Standardkompatibilität

Mit PostgreSQL 12 wurde die Möglichkeit eingeführt, JSON-Dokumente mithilfe von im SQL/JSON-Standard definierten JSON-Pfadausdrücken abzufragen. Solche Abfragen können vorhandene Indexierungsmechanismen für im JSONB-Format gespeicherte Dokumente nutzen, um Daten effizient abzurufen.

Gängige Tabellenausdrücke, auch WITH-Abfragen genannt, können jetzt in PostgreSQL 12 automatisch durch Substitution ausgeführt werden, was wiederum dazu beitragen kann, die Leistung vieler bestehender Abfragen zu verbessern. In der neuen Version kann ein Ersetzungsteil einer WITH-Abfrage nur ausgeführt werden, wenn er nicht rekursiv ist, keine Nebenwirkungen hat und in einem nachfolgenden Teil der Abfrage nur einmal referenziert wird.

PostgreSQL 12 führt Unterstützung für „generierte Spalten“ ein. Dieser im SQL-Standard beschriebene Spaltentyp berechnet einen Wert basierend auf dem Inhalt anderer Spalten in derselben Tabelle. In dieser Version unterstützt PostgreSQL „gespeicherte generierte Spalten“, bei denen der berechnete Wert auf der Festplatte gespeichert wird.

Internationalisierung

PostgreSQL 12 erweitert die Unterstützung für ICU-Kollatierungen, indem es Benutzern ermöglicht, „nicht deterministische Kollatierungen“ zu definieren, die beispielsweise Vergleiche ohne Berücksichtigung der Groß- und Kleinschreibung oder des Akzents ermöglichen können.

Authentifizierung

PostgreSQL erweitert seine Unterstützung für starke Authentifizierungsmethoden um mehrere Verbesserungen, die zusätzliche Sicherheit und Funktionalität bieten. Diese Version führt eine clientseitige und serverseitige Verschlüsselung für die Authentifizierung über GSSAPI-Schnittstellen ein sowie die Möglichkeit für PostgreSQL, LDAP-Server zu erkennen, wenn PostgreSQL mit OpenLDAP kompiliert wird.

Darüber hinaus unterstützt PostgreSQL 12 jetzt eine Multi-Faktor-Authentifizierungsoption. Der PostgreSQL-Server kann nun verlangen, dass der Client mithilfe von clientcert=verify-full ein gültiges SSL-Zertifikat mit dem entsprechenden Benutzernamen bereitstellt, und dies mit einer separaten Authentifizierungsmethodenanforderung (z. B. scram-sha-256) kombinieren.

Verwaltung

Mit PostgreSQL 12 wurde die Möglichkeit eingeführt, nicht blockierende Indexneuerstellungen mithilfe des Befehls REINDEX CONCURRENTLY durchzuführen. Dadurch können Benutzer DBMS-Ausfallzeiten während langwieriger Indexneuerstellungen vermeiden.

Darüber hinaus können Sie in PostgreSQL 12 Seitenprüfsummen in einem Shutdown-Cluster mit dem Befehl pg_checksums aktivieren oder deaktivieren. Bisher konnten Seitenprüfsummen, eine Funktion zur Überprüfung der Integrität der auf der Festplatte gespeicherten Daten, nur aktiviert werden, wenn der PostgreSQL-Cluster mit initdb initialisiert wurde.

Source: linux.org.ru

Kommentar hinzufügen