Release von PostgreSQL 12

Die Entwicklergruppe von PostgreSQL hat die Veröffentlichung von PostgreSQL 12 angekündigt, der neuesten Version des relationalen Datenbankmanagementsystems mit offener Quelle.
In PostgreSQL 12 wurde die Abfrageleistung erheblich verbessert – dies gilt insbesondere für die Verarbeitung großer Datenmengen, außerdem wurde die Nutzung des Speicherplatzes insgesamt optimiert.

Unter den neuen Funktionen:

  • Implementierung der JSON Path-Abfragesprache (ein wesentlicher Bestandteil des Standards SQL/JSON);
  • Optimierung der Ausführung gemeinsamer Tabellenausdrücke (WITH);
  • Unterstützung für generierte Spalten

Die Community setzt zudem die Arbeiten an der Erweiterbarkeit und Zuverlässigkeit von PostgreSQL fort, indem sie die Unterstützung für Internationalisierung, Authentifizierungsmöglichkeiten und einfachere Verwaltungswege des Systems verbessert.

In dieses Release wurde die Implementierung der Schnittstelle für plug-in Speicher-Engines aufgenommen, die es Entwicklern nun ermöglicht, eigene Methoden zur Datenspeicherung zu erstellen.

Leistungsverbesserungen

PostgreSQL 12 umfasst wesentliche Leistungsverbesserungen und Wartungsprozeduren für indexbasierte Systeme und Partitionierung.

B-Baum-Indizes – der Standardtyp der Indizierung in PostgreSQL – wurden in Version 12 für Workloads optimiert, die häufige Indizierungsänderungen erfordern. Die Verwendung des Referenztests TPC-C für PostgreSQL 12 zeigte eine durchschnittliche Reduzierung des Raums um 40 % und einen allgemeinen Leistungsgewinn bei Abfragen.

Abfragen an partitionierte Tabellen haben spürbare Verbesserungen erfahren, insbesondere für Tabellen mit Tausenden von Partitionen, die nur mit begrenzten Teilen von Datenarrays arbeiten. Die Leistung beim Hinzufügen von Daten zu partitionierten Tabellen über INSERT und COPY sowie die Möglichkeit, eine neue Partition ohne Blockierung von ausgeführten Abfragen anzubinden, wurden verbessert.

In PostgreSQL 12 wurden zusätzliche Verbesserungen bei der Indizierung vorgenommen, die sich auf die Gesamtleistung auswirken, einschließlich:

  • Reduzierung der Overheads bei der Generierung von WAL für die Indexarten GiST, GIN und SP-GiST;
  • Möglichkeit, sogenannte abdeckende Indizes (covering indexes, Angebot INCLUDE) auf GiST-Indizes zu erstellen;
  • Möglichkeit, k-NN-Suchen (nächste Nachbarn) mit dem Distanzoperator () und unter Verwendung von SP-GiST-Indizes durchzuführen;
  • Unterstützung für die Erfassung von Statistiken über die häufigsten Werte (most-common value, MCV) mit CREATE STATISTICS, was zu besseren Ausführungsplänen bei der Nutzung von Spalten führt, deren Werte ungleichmäßig verteilt sind.

Die JIT-Kompilierung mit LLVM, die in PostgreSQL 11 eingeführt wurde, ist jetzt standardmäßig aktiviert. Die JIT-Kompilierung verbessert die Leistung bei der Verarbeitung von Ausdrücken in WHERE-Klauseln, Ziellisten, Aggregaten und einigen internen Operationen. Sie ist verfügbar, wenn Sie PostgreSQL mit LLVM kompiliert haben oder ein PostgreSQL-Paket verwenden, das mit aktiviertem LLVM erstellt wurde.

Verbesserungen der SQL-Syntax und der Kompatibilität mit dem Standard

In PostgreSQL 12 gibt es die Möglichkeit, Abfragen an JSON-Dokumente unter Verwendung der im SQL/JSON-Standard definierten JSON-Pfad-Ausdrücke zu stellen. Solche Abfragen können vorhandene Indexierungsmechanismen für Dokumente im JSONB-Format nutzen, um Daten effizient abzurufen.

Gemeinsame tabellarische Ausdrücke, auch bekannt als WITH-Abfragen, können in PostgreSQL 12 jetzt automatisch unter Verwendung von Substitution ausgeführt werden, was die Leistung vieler bestehender Abfragen verbessern kann. In der neuen Version kann der Teil der WITH-Anweisung nur dann mit Substitution ausgeführt werden, wenn er nicht rekursiv ist, keine Nebenwirkungen hat und nur einmal im folgenden Teil der Abfrage referenziert wird.

PostgreSQL 12 unterstützt nun „generierte Spalten“. Dieser im SQL-Standard beschriebene Spaltentyp berechnet den Wert basierend auf dem Inhalt anderer Spalten in derselben Tabelle. In dieser Version unterstützt PostgreSQL „persistente generierte Spalten“, bei denen der berechnete Wert auf der Festplatte gespeichert wird.

Internationalisierung

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

Authentifizierung

PostgreSQL erweitert seine Unterstützung für zuverlässige Authentifizierungsmethoden mit mehreren Verbesserungen, die zusätzliche Sicherheit und Funktionalität bieten. In diesem Release wurde die Verschlüsselung auf der Client- und der Serverseite für die Authentifizierung über GSSAPI-Schnittstellen eingeführt sowie die Möglichkeit, dass PostgreSQL erkennt Server LDAP, wenn PostgreSQL mit OpenLDAP kompiliert wurde.

Darüber hinaus unterstützt PostgreSQL 12 jetzt eine Variante der Mehrfaktorauthentifizierung. Der PostgreSQL-Server kann nun vom Client die Bereitstellung eines gültigen SSL-Zertifikats mit dem entsprechenden Benutzernamen unter Verwendung von clientcert=verify-full verlangen und dies mit einer separaten Anforderung für die Authentifizierungsmethode (zum Beispiel scram-sha-256) kombinieren.

Administration

In PostgreSQL 12 wurde die Möglichkeit eingeführt, nicht blockierende Index-Neuerstellungen mit dem Befehl REINDEX CONCURRENTLY durchzuführen. Dies ermöglicht es den Nutzern, Ausfallzeiten des DBMS während längerer Indexneuerstellungen zu vermeiden.

Darüber hinaus können in PostgreSQL 12 die Seiten-Prüfziffern in einem abgeschalteten Cluster mit dem Befehl pg_checksums aktiviert oder deaktiviert werden. Zuvor konnten die Seiten-Prüfziffern – eine Funktion zur Überprüfung der Integrität der auf der Festplatte gespeicherten Daten – nur beim Initialisieren des PostgreSQL-Clusters mit initdb aktiviert werden.

Quelle: linux.org.ru

60GB SSD 8Gb DDR4