Wydanie PostgreSQL 12

Grupa deweloperów PostgreSQL ogłosiła wydanie PostgreSQL 12, najnowszej wersji relacyjnego systemu zarządzania bazami danych o otwartym kodzie źródłowym.
W PostgreSQL 12 znacząco poprawiono wydajność zapytań, szczególnie podczas pracy z dużymi wolumenami danych, a także zoptymalizowano ogólne wykorzystanie przestrzeni dyskowej.

Wśród nowych możliwości:

  • implementacja języka zapytań JSON Path (kluczowego elementu standardu SQL/JSON);
  • optymalizacja wykonywania wspólnych wyrażeń tabelarycznych (WITH);
  • obsługa kolumn generowanych

Społeczność kontynuuje również prace nad rozszerzalnością i niezawodnością PostgreSQL, rozwijając obsługę internacjonalizacji, mechanizmów uwierzytelniania oraz udostępniając prostsze sposoby administrowania systemem.

W tej wersji wdrożono interfejs dla podłączanych silników przechowywania, co odtąd pozwala deweloperom tworzyć własne metody składowania danych.

Poprawa wydajności

PostgreSQL 12 obejmuje istotne usprawnienia wydajności i procedur utrzymaniowych dla systemów indeksowania oraz partycjonowania.

Indeksy B-tree — standardowy typ indeksowania w PostgreSQL — zostały zoptymalizowane w wersji 12 pod kątem obciążeń zakładających częste modyfikacje indeksów. Zastosowanie testu porównawczego TPC-C dla PostgreSQL 12 wykazało średnie zmniejszenie wykorzystania przestrzeni o 40% oraz ogólny wzrost wydajności zapytań.

Zapytania do tabel partycjonowanych zostały wyraźnie usprawnione, szczególnie w przypadku tabel składających się z tysięcy partycji, gdzie operacje obejmują tylko ograniczone części zbiorów danych. Poprawiono wydajność dodawania danych do tabel partycjonowanych za pomocą INSERT i COPY, a także możliwość dołączania nowej partycji bez blokowania wykonywanych zapytań.

W PostgreSQL 12 wprowadzono także dodatkowe usprawnienia w obszarze indeksowania, które wpływają na ogólną wydajność, w tym:

  • zmniejszenie narzutu przy generowaniu WAL dla typów indeksów GiST, GIN i SP-GiST;
  • możliwość tworzenia tak zwanych indeksów pokrywających (covering indexes, klauzula INCLUDE) dla indeksów GiST;
  • możliwość wykonywania zapytań typu „najbliżsi sąsiedzi” (k-NN search) za pomocą operatora odległości () z wykorzystaniem indeksów SP-GiST;
  • obsługę zbierania statystyk najczęściej występujących wartości (most-common value, MCV) za pomocą CREATE STATISTICS, co pomaga uzyskiwać lepsze plany wykonania zapytań przy użyciu kolumn, których wartości są rozłożone nierównomiernie.

Kompilacja JIT z wykorzystaniem LLVM, wprowadzona w PostgreSQL 11, jest teraz domyślnie włączona. Kompilacja JIT pozwala zwiększać wydajność podczas pracy z wyrażeniami w klauzulach WHERE, listach docelowych, agregatach oraz niektórych operacjach wewnętrznych. Jest dostępna, jeśli PostgreSQL został skompilowany z LLVM lub jeśli używasz pakietu PostgreSQL utworzonego z włączoną obsługą LLVM.

Ulepszenia możliwości języka SQL i zgodności ze standardem

PostgreSQL 12 wprowadza możliwość wykonywania zapytań do dokumentów JSON z użyciem wyrażeń ścieżki JSON zdefiniowanych w standardzie SQL/JSON. Takie zapytania mogą wykorzystywać istniejące mechanizmy indeksowania dokumentów przechowywanych w formacie JSONB do efektywnego pobierania danych.

Wspólne wyrażenia tabelaryczne, znane również jako zapytania z WITH, w PostgreSQL 12 mogą być teraz automatycznie wykonywane z użyciem inline’owania, co z kolei może pomóc zwiększyć wydajność wielu istniejących zapytań. W nowej wersji część zapytania WITH może być wykonywana przez inline’owanie tylko wtedy, gdy nie jest rekurencyjna, nie ma skutków ubocznych i odwołano się do niej tylko raz w dalszej części zapytania.

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

Międzynarodowa lokalizacja

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

Autoryzacja

PostgreSQL rozszerza obsługę niezawodnych metod uwierzytelniania dzięki kilku usprawnieniom, które zapewniają dodatkowe bezpieczeństwo i funkcjonalność. W tym wydaniu wprowadzono szyfrowanie po stronie klienta i serwera dla uwierzytelniania za pośrednictwem interfejsów GSSAPI, a także możliwość wykrywania przez PostgreSQL serwery LDAP, jeśli PostgreSQL został skompilowany z OpenLDAP.

Ponadto PostgreSQL 12 obsługuje teraz wariant uwierzytelniania wieloskładnikowego. Serwer PostgreSQL może teraz zażądać od klienta przedstawienia prawidłowego SSL-certyfikatu z odpowiednią nazwą użytkownika przy użyciu clientcert=verify-full i połączyć to z osobnym wymogiem metody uwierzytelniania (na przykład scram-sha-256).

Administracja

W PostgreSQL 12 pojawiła się możliwość wykonywania nieblokującej przebudowy indeksów za pomocą polecenia REINDEX CONCURRENTLY. Dzięki temu użytkownicy mogą uniknąć przestojów w działaniu systemu DBMS podczas długotrwałej przebudowy indeksów.

Ponadto w PostgreSQL 12 można włączać lub wyłączać sumy kontrolne stron w klastrze pozostającym w stanie wyłączonym za pomocą polecenia pg_checksums. Wcześniej sumy kontrolne stron — funkcję pomagającą sprawdzać integralność danych przechowywanych na dysku — można było włączyć tylko podczas inicjalizacji klastra PostgreSQL za pomocą initdb.

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

Kup niezawodny hosting stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron z ochroną DDoS, serwery VPS VDS - ProHoster