Wersja PostgreSQL 12

Zespół PostgreSQL ogłosił wydanie PostgreSQL 12, najnowszej wersji systemu zarządzania relacyjnymi bazami danych typu open source.
PostgreSQL 12 znacznie poprawił wydajność zapytań - szczególnie podczas pracy z dużymi wolumenami danych, a także ogólnie zoptymalizował wykorzystanie miejsca na dysku.

Nowe funkcje obejmują:

  • implementacja języka zapytań JSON Path (najważniejsza część standardu SQL/JSON);
  • optymalizacja wykonywania typowych wyrażeń tabelowych (WITH);
  • obsługa generowanych kolumn

Społeczność kontynuuje także prace nad rozszerzalnością i niezawodnością PostgreSQL, rozwijając obsługę internacjonalizacji, możliwości uwierzytelniania i zapewniając łatwiejsze sposoby administrowania systemem.

To wydanie zawiera implementację interfejsu dla podłączanych silników pamięci masowej, który umożliwia teraz programistom tworzenie własnych metod przechowywania danych.

Ulepszenia w wydajności

PostgreSQL 12 zawiera znaczące ulepszenia wydajności i konserwacji systemów indeksowania i partycjonowania.

Indeksy B-tree, standardowy typ indeksowania w PostgreSQL, zostały zoptymalizowane w wersji 12 pod kątem obciążeń wymagających częstych modyfikacji indeksów. Korzystanie z testu porównawczego TPC-C dla PostgreSQL 12 wykazało średnio 40% zmniejszenie wykorzystania przestrzeni i ogólny wzrost wydajności zapytań.

Zapytania dotyczące tabel podzielonych na partycje zostały znacząco ulepszone, szczególnie w przypadku tabel składających się z tysięcy partycji, które wymagają pracy tylko z ograniczonymi częściami tablic danych. Poprawiono wydajność dodawania danych do partycjonowanych tabel za pomocą INSERT i COPY, a także możliwość dołączenia nowej partycji bez blokowania zapytań.

PostgreSQL 12 wprowadził dodatkowe ulepszenia indeksowania, które wpływają na ogólną wydajność, w tym:

  • zmniejszony narzut przy generowaniu WAL dla typów indeksów GiST, GIN i SP-GiST;
  • możliwość tworzenia tzw. indeksów pokrywających (klauzula INCLUDE) na indeksach GiST;
  • możliwość wykonywania zapytań „najbliższego sąsiada” (wyszukiwanie k-NN) z wykorzystaniem operatora odległości (<->) i indeksów SP-GiST;
  • obsługa zbierania statystyk dotyczących najczęściej występujących wartości (MCV) za pomocą narzędzia CREATE STATISTICS, co pomaga uzyskać lepsze plany zapytań w przypadku korzystania z kolumn, których wartości są nierównomiernie rozłożone.

Kompilacja JIT przy użyciu LLVM, wprowadzona w PostgreSQL 11, jest teraz domyślnie włączona. Kompilacja JIT poprawia wydajność podczas pracy z wyrażeniami w klauzulach WHERE, listach docelowych, agregatach i niektórych operacjach wewnętrznych. Jest dostępny, jeśli skompilowałeś PostgreSQL z LLVM lub używasz pakietu PostgreSQL, który został zbudowany z włączoną funkcją LLVM.

Ulepszenia możliwości języka SQL i kompatybilność ze standardami

PostgreSQL 12 wprowadził możliwość odpytywania dokumentów JSON przy użyciu wyrażeń ścieżek JSON zdefiniowanych w standardzie SQL/JSON. Takie zapytania mogą wykorzystywać istniejące mechanizmy indeksowania dokumentów przechowywanych w formacie JSONB w celu wydajnego wyszukiwania danych.

Typowe wyrażenia tabelowe, znane również jako zapytania WITH, mogą być teraz automatycznie wykonywane przy użyciu podstawienia w PostgreSQL 12, co z kolei może pomóc poprawić wydajność wielu istniejących zapytań. W nowej wersji część podstawieniowa zapytania WITH może zostać wykonana tylko wtedy, gdy nie jest rekurencyjna, nie ma skutków ubocznych i jest odwoływana tylko raz w kolejnej części zapytania.

PostgreSQL 12 wprowadza obsługę „kolumn generowanych”. Opisany w standardzie SQL, ten typ kolumny oblicza wartość na podstawie zawartości innych kolumn w tej samej tabeli. W tej wersji PostgreSQL obsługuje „przechowywane wygenerowane kolumny”, w których obliczona wartość jest przechowywana na dysku.

Umiędzynarodowienie

PostgreSQL 12 rozszerza obsługę sortowania ICU, umożliwiając użytkownikom definiowanie „niedeterministycznych zestawień”, które mogą na przykład umożliwiać porównania bez uwzględniania wielkości liter i akcentów.

Uwierzytelnianie

PostgreSQL rozszerza obsługę silnych metod uwierzytelniania o kilka ulepszeń, które zapewniają dodatkowe bezpieczeństwo i funkcjonalność. W tej wersji wprowadzono szyfrowanie po stronie klienta i serwera do uwierzytelniania za pośrednictwem interfejsów GSSAPI, a także możliwość wykrywania przez PostgreSQL serwerów LDAP, gdy PostgreSQL jest kompilowany z OpenLDAP.

Dodatkowo PostgreSQL 12 obsługuje teraz opcję uwierzytelniania wieloskładnikowego. Serwer PostgreSQL może teraz wymagać od klienta dostarczenia ważnego certyfikatu SSL z odpowiednią nazwą użytkownika przy użyciu parametru clientcert=verify-full i połączyć to z wymaganiem oddzielnej metody uwierzytelniania (np. scram-sha-256).

administracja

W PostgreSQL 12 wprowadzono możliwość wykonywania nieblokujących przebudów indeksów za pomocą polecenia REINDEX CONCURRENTLY. Pozwala to użytkownikom uniknąć przestojów DBMS podczas długich przebudów indeksów.

Dodatkowo w PostgreSQL 12 można włączyć lub wyłączyć sumy kontrolne stron w klastrze zamykającym za pomocą polecenia pg_checksums. Wcześniej sumy kontrolne stron, czyli funkcja pomagająca zweryfikować integralność danych przechowywanych na dysku, można było włączyć tylko wtedy, gdy klaster PostgreSQL został zainicjowany przy użyciu initdb.

Źródło: linux.org.ru

Dodaj komentarz