Die PostgreSQL-Entwicklergruppe hat die Veröffentlichung von PostgreSQL 12 bekannt gegeben, der neuesten Version des relationalen Open-Source-Datenbankmanagementsystems.
In PostgreSQL 12 wurde die Abfrageleistung erheblich verbessert – insbesondere bei der Verarbeitung großer Datenmengen, zudem wurde die Optimierung der gesamten Datenträgerspeicherung vorgenommen.
Zu den neuen Funktionen gehören:
- Implementierung der JSON Path-Abfragesprache (einem entscheidenden Bestandteil des Standards SQL/JSON);
- Optimierung der Ausführung von Common Table Expressions (WITH);
- Unterstützung für generierte Spalten
Die Community arbeitet weiterhin an der Erweiterbarkeit und Zuverlässigkeit von PostgreSQL, entwickelt die Unterstützung für Internationalisierung und Authentifizierungsmöglichkeiten und bietet einfachere Wege zur Systemadministration.
In diese Version wurde die Implementierung eines Interfaces für Plug-in-Speicher-Engines aufgenommen, was Entwicklern jetzt ermöglicht, eigene Methoden zur Datenspeicherung zu erstellen.
Leistungsverbesserungen
PostgreSQL 12 umfasst erhebliche Verbesserungen der Leistung und Wartungsverfahren für Indexierungs- und Partitionierungssysteme.
B-Baum-Indizes sind der Standardtyp der Indizierung in PostgreSQL und wurden in Version 12 für Arbeitslasten optimiert, die häufige Modifikationen der Indizes erfordern. Der Einsatz des Referenztests TPC-C für PostgreSQL 12 zeigte eine durchschnittliche Reduzierung des Speicherverbrauchs um 40 % und einen allgemeinen Leistungsschub bei Abfragen.
Abfragen an partitionierten Tabellen haben erhebliche Verbesserungen erfahren, insbesondere bei Tabellen, die aus Tausenden von Partitionen bestehen und nur mit begrenzten Teilen von Datensätzen arbeiten. Die Leistung beim Hinzufügen von Daten zu partitionierten Tabellen durch INSERT und COPY wurde verbessert, ebenso wie die Möglichkeit, eine neue Partition ohne Sperrung der ausgeführten Abfragen anzuhängen.
In PostgreSQL 12 wurden weitere Verbesserungen beim Indizieren implementiert, die die Gesamtleistung betreffen, einschließlich:
- Reduzierung der Overhead-Kosten bei der Generierung von WAL für die Indextypen GiST, GIN und SP-GiST;
- die Möglichkeit, sogenannte abdeckende Indizes (covering indexes, Vorschlag INCLUDE) für GiST-Indizes zu erstellen;
- Die Möglichkeit, Anfragen nach „nächsten Nachbarn“ (k-NN-Suche) mittels des Distanzoperators () und unter Verwendung von SP-GiST-Indizes auszuführen;
- Unterstützung für die Erfassung von Statistiken zu häufigsten Werten (Most-Common Value, MCV) durch CREATE STATISTICS, was zu besseren Ausführungsplänen für Abfragen führt, wenn die Werte in den Spalten ungleichmäßig verteilt sind.
JIT-Kompilierung mit LLVM, die in PostgreSQL 11 eingeführt wurde, ist jetzt standardmäßig aktiviert. Diese Kompilierung steigert die Leistung bei der Verarbeitung von Ausdrücken in WHERE-Klauseln, Ziellisten, Aggregationen und einigen internen Operationen. Sie ist verfügbar, wenn Sie PostgreSQL mit LLVM kompiliert haben oder ein PostgreSQL-Paket verwenden, das mit aktivierter LLVM erstellt wurde.
Verbesserungen der SQL-Sprache und der Kompatibilität mit Standards
In PostgreSQL 12 wurde die Möglichkeit eingeführt, Abfragen an JSON-Dokumente mit den im SQL/JSON-Standard definierten JSON-Pfadexpressionen durchzuführen. Diese Abfragen können bestehende Indexierungsmechanismen für Dokumente im JSONB-Format nutzen, um Daten effizient abzurufen.
Allgemeine tabellarische Ausdrücke, auch bekannt als WITH-Abfragen, können in PostgreSQL 12 nun automatisch mit Substitution ausgeführt werden, was wiederum die Leistung vieler bestehender Abfragen verbessern kann. In dieser neuen Version kann der WITH-Teil einer Abfrage mit Substitution ausgeführt werden, solange er nicht rekursiv ist, keine Nebenwirkungen hat und nur einmal in den folgenden Teilen der Abfrage referenziert wird.
In PostgreSQL 12 wird die Unterstützung für "generierte Spalten" eingeführt. Laut dem SQL-Standard berechnet dieser Spaltentyp 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 von ICU-Verbindungen, indem es den Benutzern ermöglicht, "nicht deterministische Vergleiche" zu definieren, die beispielsweise Vergleiche ohne Berücksichtigung von Groß- und Kleinschreibung oder Akzenten erlauben können.
Authentifizierung
PostgreSQL erweitert seinen Support für zuverlässige Authentifizierungsmethoden durch mehrere Verbesserungen, die zusätzliche Sicherheit und Funktionalität bieten. In dieser Version werden Client- und Server-Seitige Verschlüsselung für die Authentifizierung über GSSAPI-Schnittstellen eingeführt sowie die Möglichkeit, dass PostgreSQL LDAP entdeckt, Server wenn PostgreSQL mit OpenLDAP kompiliert ist.
Darüber hinaus unterstützt PostgreSQL 12 jetzt eine Variante der Multi-Faktor-Authentifizierung. 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 einer Authentifizierungsmethode (z.B. scram-sha-256) kombinieren.
Administration
In PostgreSQL 12 wurde die Möglichkeit hinzugefügt, nicht-blockierendes Reindexieren mit dem Befehl REINDEX CONCURRENTLY durchzuführen. Dies ermöglicht es den Benutzern, Ausfallzeiten der Datenbank während des langen Reindexierens zu vermeiden.
Zusätzlich können in PostgreSQL 12 die Seitenprüfzellen in einem ausgeschalteten Cluster mit dem Befehl pg_checksums ein- oder ausgeschaltet werden. Zuvor konnten Seitenprüfzellen – eine Funktion zur Überprüfung der Datenintegrität auf der Festplatte – nur beim Initialisieren des PostgreSQL-Clusters mit initdb aktiviert werden.
Quelle: linux.org.ru
