PostgreSQL

Hier eine Zeilen zur PostgreSQL Datenbank.

Version 11

Am 18.11.2018 kam die Version 11 der PostgreSQL Datenbank raus. Diese Version beinhaltet folgende Neuerungen.

JIT (Just-in-Time-Kompilierung)

Die Abfragen werden zur Laufzeit in Maschinencode übersetzt und sollen dadurch performanter laufen. Der Nachteil ist, dass das Übersetzen auch Zeit kostet. Bei Abfragen die bereits schnell sind, könnte JIT zur Bremse werden, wobei jedoch lange laufende Abfrage (z.B. analytische) davon profitieren können [1].

Parallele Abfragen

Wohl bereits seit Version 9.2 verfügbar, wurden in der Version 11 die Parallelen Abfragen verbessert. Hash-Joins können nun auch von mehreren Kernen verarbeitet werden. Partition und Sequential Scans wurden nochmals optimiert. UNION werden parallel ausgeführt [1].

Windows Functions

Die Windows Functions wurden von Version 10 auf 11 erweitert. Stichwort: Sliding-Window (Frame) [1]. Vorher waren diese nur auf feste Partitionen beschränkt.

Partitions

Die Partitionierung von Tabellen gibt es seit Version 8.1, wurde in Version 11 aber nochmals erweitert. Hash-Range Partitions lassen sich nun noch feiner verteilen. Hat man z.B. viele Daten zu einem Restwert bei Modulo 4, lassen diese sich nochmal unterteilen. Auch musste vor der Version 11 für jede Partition ein Index definiert werden. Das erfolgt nun in der Tabellendefinition [1].

Covering Indexes und Index-Only Scans

Covering Indixes gab es bereits vor Version 11. Das ist ein Index der nicht nur die Where-Klausel durch den Index beantwortet, sondern auch die Projektion aus dem SELECT-Statement. Einige Abfrage die auf einem Covering Index laufen, heißen Index-Only Scans. Nur bestimmte Indizes und bestimmte Abfragen unterstützen Index-Only Scan. In der Version 11 gibt es zusätzlich eine Optimierung durch das Schlüsselwort INCLUDE [2] [3]. Hier ein Beispiel aus der PostgreSQL Dokumentation [4].

Das INCLUDE sorgt dafür, dass die Spalte y nicht teil des B-Trees ist, sondern außerhalb der Baumstruktur in einer einfacheren Struktur gespeichert wird. Dadurch ist Performance besser und die Spalte unterliegt nicht den Index Beschränkungen.

[1] https://www.heise.de/select/ix/2018/12
[2] https://severalnines.com/blog/whats-new-postgresql-11
[3] https://www.postgresql.org/docs/11/sql-createindex.html
[4] https://www.postgresql.org/docs/devel/indexes-index-only-scans.html

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.