Najnowsza i najlepsza wersja PostgreSQL, v11, ukaże się w tym tygodniu! Oto krótkie spojrzenie na nowe funkcje w tej wersji.
Ulepszenia partycjonowania
Największy zestaw ulepszeń dotyczy obsługi partycji. Postgres 11 obsługuje:
- aktualizacja wierszy może przenosić je między partycjami
- domyślne partycje
- automatyczne tworzenie indeksów
- Ograniczenia kluczy obcych są obsługiwane w tabelach podzielonych na partycje
- unikalne indeksy
- agregacja przesuwa się w dół do partycji
- partycjonowanie przez hash
- dzieci partycji na zdalnych serwerach (postgres_fdw) mogą być aktualizowane
- Wstawianie..ON CONFLICT jest obsługiwane w tabelach podzielonych na partycje
- bardziej wydajne plany zapytań i szybsze wykonywanie zapytań
Przeczytaj więcej o tych ulepszeniach tutaj.
Więcej równoległości
Istnieje wiele ulepszeń na całej planszy związanych ze zwiększoną równoległością. Połączenia, unii, tworzenie tabel i widoków za pomocą „CREATE..AS SELECT”, tworzenie indeksów b-drzewa i więcej korzyści z tych zmian.
Oto artykuł na temat poprawy wydajności tworzenia indeksów w Postgres 11.
Zapytania zgodne z JIT
Chociaż domyślnie wyłączone w 11, kompilacja zapytań JIT oparta na LLVM jest teraz wbudowana w Postgres. Serwer może teraz zdecydować się na kompilację niektórych zapytań (tych z oszacowaniami wykonania wyższymi niż próg) przy użyciu LLVM, co skutkuje szybszymi zapytaniami. Ta kompilacja jest automatyczna i przejrzysta dla aplikacji.
Oto kilka liczb.
Indeksy pokrycia
Dodano teraz indeksy obejmujące, dostępne w innych systemach RDBMS, ale nie w PostgreSQL. Dzięki temu możliwe jest posiadanie takiego indeksu (nowa składnia):
CREATE INDEX empid_idx ON employees(empid) INCLUDE (empname);
Taki indeks zawiera dodatkowe atrybuty (tu „empname”) w samym indeksie i umożliwia spełnienie zapytań takich jak:
SELECT empname FROM employees WHERE empid BETWEEN 1000 and 2000;
całkowicie przy użyciu skanowania tylko indeksu i w ogóle nie dotykać stosu.
Przeczytaj więcej o pokrywaniu indeksów tutaj.
Procedury przechowywane
Procedury składowane to kolejna instancja PostgreSQL w nadrabianiu zaległości w stosunku do innych systemów RDBMS. Są one oczywiście podobne do funkcji składowanych, które PostgreSQL obsługuje od dawna, ale jedyną wielką rzeczą, jaką można osiągnąć tylko przy użyciu procedur, jest kontrola transakcji. Możesz zatwierdzać i wycofywać transakcje z procedur przechowywanych.
Zajrzyj do dokumentacji UTWÓRZ PROCEDURĘ.
Dodawanie kolumn do tabel
Zmienianie tabeli w celu dodania nowej kolumny NOT NULL z wartością DEFAULT było trochę uciążliwe w PostgreSQL, ponieważ spowodowało to, że serwer przepisał całą tabelę. W wersji 11 można teraz mieć takie instrukcje DDL:
ALTER TABLE users ADD COLUMN foo_factor integer NOT NULL DEFAULT 42;
wykonać w stałym czasie. Wiersze nie są dotykane podczas wykonywania, a zamiast tego są aktualizowane „leniwie”.
Przeczytaj więcej o tej funkcji tutaj.
Funkcje SHA
I wreszcie, ci z was, którzy używali pgcrypto tylko do funkcji SHA, mogą teraz przełączyć się na te wbudowane w PostgreSQL 11:
bench=# \df pg_catalog.sha*
List of functions
Schema | Name | Result data type | Argument data types | Type
------------+--------+------------------+---------------------+------
pg_catalog | sha224 | bytea | bytea | func
pg_catalog | sha256 | bytea | bytea | func
pg_catalog | sha384 | bytea | bytea | func
pg_catalog | sha512 | bytea | bytea | func
(4 rows)
bench=# SELECT sha256('hello');
sha256
--------------------------------------------------------------------
\x2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
(1 row)