Wersja PostgreSQL 15 DBMS

Po roku rozwoju opublikowano nową stabilną gałąź systemu DBMS PostgreSQL 15. Aktualizacje dla nowej gałęzi będą wydawane w ciągu pięciu lat, do listopada 2027 r.

Główne innowacje:

  • Dodano obsługę polecenia SQL „MERGE”, które przypomina wyrażenie „INSERT… ON CONFLICT”. MERGE umożliwia tworzenie warunkowych instrukcji SQL, które łączą operacje INSERT, UPDATE i DELETE w jedno wyrażenie. Na przykład, używając MERGE, możesz połączyć dwie tabele, wstawiając brakujące rekordy i aktualizując istniejące. POŁĄCZ SIĘ Z kontem_klienta ca KORZYSTAJĄC z ostatnich_transakcji t ON t.customer_id = ca.customer_id KIEDY DOPASOWANO, A NASTĘPNIE AKTUALIZUJ USTAW saldo = saldo + wartość_transakcji JEŚLI NIE DOPASOWANO, NASTĘPNIE WSTAW (id_klienta, saldo) WARTOŚCI (t.id_klienta, t.wartość_transakcji);
  • Znacząco ulepszono algorytmy sortowania danych w pamięci i na dysku. W zależności od rodzaju danych testy wykazują wzrost szybkości sortowania od 25% do 400%.
  • Przyspieszono funkcje okna używające row_number(), rank(), gęste_rank() i count().
  • Zaimplementowano możliwość równoległego wykonywania zapytań z wyrażeniem „SELECT DISTINCT”.
  • Mechanizm łączenia tabel zewnętrznych Foreign Data Wrapper (postgres_fdw) oprócz wcześniej dodanej możliwości asynchronicznego przetwarzania żądań do serwerów zewnętrznych implementuje obsługę asynchronicznych zatwierdzeń.
  • Dodano możliwość wykorzystania algorytmów LZ4 i Zstandard (zstd) do kompresji dzienników transakcji WAL, co przy niektórych obciążeniach może jednocześnie poprawić wydajność i zaoszczędzić miejsce na dysku. Aby skrócić czas odzyskiwania po awarii, dodano obsługę proaktywnego odzyskiwania stron pojawiających się w dzienniku WAL.
  • Narzędzie pg_basebackup dodało obsługę kompresji plików kopii zapasowych po stronie serwera przy użyciu metod gzip, LZ4 lub zstd. Istnieje możliwość wykorzystania własnych modułów do archiwizacji, co pozwala obejść się bez konieczności uruchamiania poleceń powłoki.
  • Dodano szereg nowych funkcji do przetwarzania ciągów znaków przy użyciu wyrażeń regularnych: regexp_count(), regexp_instr(), regexp_like() i regexp_substr().
  • Do funkcji range_agg() dodano możliwość agregowania typów wielozakresowych („multirange”).
  • Dodano tryb security_invoker, który umożliwia tworzenie widoków uruchamianych jako użytkownik wywołujący, a nie jako twórca widoku.
  • W przypadku replikacji logicznej zaimplementowano obsługę filtrowania wierszy i określania list kolumn, umożliwiając po stronie nadawcy wybranie podzbioru danych z tabeli do replikacji. Dodatkowo nowa wersja upraszcza zarządzanie konfliktami, np. można teraz pominąć transakcje powodujące konflikt i automatycznie wyłączyć subskrypcję w przypadku wykrycia błędu. Replikacja logiczna pozwala na użycie zatwierdzeń dwufazowych (2PC).
  • Dodano nowy format logu – jsonlog, który zapisuje informacje w ustrukturyzowanej formie z wykorzystaniem formatu JSON.
  • Administrator ma możliwość delegowania użytkownikom indywidualnych uprawnień do zmiany niektórych parametrów konfiguracyjnych serwera PostgreSQL.
  • Narzędzie psql dodało obsługę wyszukiwania informacji o ustawieniach (pg_settings) za pomocą polecenia „\dconfig”.
  • Zapewnione jest wykorzystanie pamięci współdzielonej do gromadzenia statystyk pracy serwera, co pozwala zrezygnować z osobnego procesu zbierania statystyk i okresowego resetowania stanu na dysk.
  • Dodano możliwość użycia domyślnych ustawień regionalnych ICU „ICU Collation”; poprzednio jako domyślnych ustawień regionalnych można było używać tylko ustawień regionalnych libc.
  • Zaproponowano wbudowane rozszerzenie pg_walinspect, które umożliwia sprawdzanie zawartości plików z logami WAL za pomocą zapytań SQL.
  • W przypadku schematu publicznego wszystkim użytkownikom, z wyjątkiem właściciela bazy danych, odebrane zostały uprawnienia do wykonywania komendy CREATE.
  • W PL/Python usunięto obsługę Pythona 2. Usunięto przestarzały, wyłączny tryb tworzenia kopii zapasowych.

Dodatek: W godzinach 19:00 - 20:00 (MSK) odbędzie się webinar omawiający zmiany w nowej wersji z Pavelem Luzanovem (Postgres Professional). Dla tych, którzy nie mogą dołączyć do transmisji, dostępne jest nagranie czerwcowego raportu Pawła „PostgreSQL 15: MERGE and more” na PGConf.Russia.

Źródło: opennet.ru

Dodaj komentarz