Wydanie bazy danych PostgreSQL 15

Po roku prac rozwoju opublikowano nową stabilną wersję bazy danych PostgreSQL 15. Aktualizacje dla nowej wersji będą wydawane przez pięć lat do listopada 2027 roku.

Główne nowości:

  • Dodano wsparcie dla komendy SQL „MERGE”, przypominającej wyrażenie „INSERT … ON CONFLICT”. MERGE umożliwia tworzenie warunkowych wyrażeń SQL, łączących w jednym wyrażeniu operacje INSERT, UPDATE i DELETE. Na przykład, za pomocą MERGE można zrealizować scalanie dwóch tabel, wstawiając brakujące rekordy i aktualizując istniejące. MERGE INTO customer_account ca USING recent_transactions t ON t.customer_id = ca.customer_id WHEN MATCHED THEN UPDATE SET balance = balance + transaction_value WHEN NOT MATCHED THEN INSERT (customer_id, balance) VALUES (t.customer_id, t.transaction_value);
  • Znacząco poprawiono algorytmy sortowania danych w pamięci i na dysku. W zależności od rodzaju danych w testach zauważono wzrost prędkości sortowania od 25% do 400%.
  • Przyspieszono działanie funkcji okienkowych przy użyciu row_number(), rank(), dense_rank() oraz count().
  • Zrealizowano możliwość równoległego wykonywania zapytań z wyrażeniem „SELECT DISTINCT”.
  • W mechanizmie podłączania zewnętrznych tabel Foreign Data Wrapper (postgres_fdw) wprowadzono wsparcie dla asynchronicznych commitów, oprócz wcześniej dodanej możliwości asynchronicznego przetwarzania zapytań do zewnętrznych serwerów.
  • Dodano możliwość zastosowania algorytmów LZ4 i Zstandard (zstd) do kompresji dzienników WAL transakcji, co przy niektórych obciążeniach pozwala jednocześnie zwiększyć wydajność i zaoszczędzić przestrzeń dyskową. W celu skrócenia czasu przywracania po awarii dodano wsparcie dla wstępnego pobierania stron, pojawiających się w dzienniku WAL.
  • Do narzędzia pg_basebackup dodano wsparcie dla kompresji plików z kopiami zapasowymi po stronie serwera, wykorzystując metody gzip, LZ4 lub zstd. Zapewniono możliwość użycia własnych modułów do archiwizowania, co pozwala na obejście konieczności uruchamiania poleceń powłoki.
  • Dodano serię nowych funkcji do przetwarzania ciągów z użyciem wyrażeń regularnych: regexp_count(), regexp_instr(), regexp_like() oraz regexp_substr().
  • Do funkcji range_agg() dodano możliwość agregowania typów wielozakresowych („multirange”).
  • Dodano tryb security_invoker, umożliwiający tworzenie widoków, które są wykonywane z prawami użytkownika wywołującego, a nie twórcy widoku.
  • W przypadku replikacji logicznej wprowadzono wsparcie dla filtrowania wierszy oraz definiowania list kolumn, co pozwala na wyodrębnienie części danych z tabeli do replikacji po stronie nadawcy. Ponadto, w nowej wersji uproszczono zarządzanie konfliktami, na przykład wprowadzono możliwość pomijania konfliktujących transakcji oraz automatycznego wyłączania subskrypcji w przypadku wykrycia błędu. Przy replikacji logicznej dozwolone jest stosowanie dwuetapowych commitów (2PC).
  • Dodano nowy format logów — jsonlog, przechowujący informacje w ustrukturyzowanej formie, wykorzystując format JSON.
  • Administrator otrzymał możliwość delegowania użytkownikom określonych uprawnień do zmiany niektórych parametrów. konfiguracji serwera PostgreSQL.
  • Do narzędzia psql dodano wsparcie dla wyszukiwania informacji o ustawieniach (pg_settings) za pomocą polecenia „\dconfig”.
  • Zapewniono wykorzystanie pamięci dzielonej do gromadzenia statystyk o działaniu serwera, co pozwoliło na rezygnację z osobnego procesu zbierania statystyk oraz okresowego zapisywania stanu na dysku.
  • Dodano możliwość stosowania domyślnych lokalizacji ICU „ICU Collation”; wcześniej jako domyślną lokalizację można było używać tylko lokalizacji libc.
  • Wprowadzono wbudowane rozszerzenie pg_walinspect, umożliwiające inspekcję zawartości plików z logami WAL za pomocą zapytań SQL.
  • Dla schemy publicznej wszyscy użytkownicy, z wyjątkiem właściciela bazy danych, otrzymali cofnięcie uprawnień do wykonywania polecenia CREATE.
  • W PL/Python usunięto wsparcie dla Pythona 2. Usunięty został przestarzały tryb ekskluzywnej kopii zapasowej („exclusive backup”).

Dodatkowo: od 19:00 do 20:00 (MSK) odbędzie się webinarium dotyczące zmian w nowej wersji z Pawłem Luzanowem (Postgres Professional). Dla tych, którzy nie będą mogli dołączyć do transmisji na żywo, dostępne jest nagranie czerwcowego wykładu Pawła „PostgreSQL 15: MERGE i nie tylko” na PGConf.Russia.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster