Wydanie systemu zarządzania bazą danych PostgreSQL 17

Po roku prac rozwojowych opublikowano nową stabilną wersję systemu zarządzania bazą danych PostgreSQL 17. Aktualizacje dla nowej wersji będą wydawane przez pięć lat, do listopada 2029 roku. Wsparcie dla PostgreSQL 12.x, najstarszej z obsługiwanych wersji, zakończy się 14 listopada.

Główne nowości:

  • Podczas wykonywania operacji VACUUM (czyszczenie i optymalizacja przechowywania danych) wprowadzono nową strukturę danych, która zużywa do 20 razy mniej pamięci. Przejście na nową strukturę pozwoliło przyspieszyć wykonywanie operacji VACUUM oraz zmniejszyć zużycie wspólnych zasobów.
  • Kontynuowano optymalizację wydajności wejścia/wyjścia. Dzięki ulepszeniu kodu do obsługi dziennika odroczonego zapisu WAL udało się zwiększyć przepustowość operacji zapisu w systemach z dużą liczbą jednoczesnych zapytań do dwóch razy. Zaproponowano nowy interfejs strumieniowego wejścia/wyjścia, który pozwolił zwiększyć szybkość sekwencyjnego przeszukiwania danych w tabelach oraz przyspieszyć aktualizację statystyk dla planera zapytań po wykonaniu operacji ANALYZE.
  • Zwiększono wydajność zapytań z użyciem wyrażenia „IN”, gdy wykorzystywane są indeksy oparte na strukturze B-tree. Wprowadzono możliwość równoległego tworzenia indeksów BRIN (Block Range Index). W planie zapytań zoptymalizowano sprawdzania „NOT NULL” i przyspieszono przetwarzanie wyrażeniowych tabel (Common Table Expression, CTE) definiowanych za pomocą polecenia SQL „WITH”. Umożliwiono wykorzystanie instrukcji procesora wektorowego (SIMD) do przyspieszania niektórych obliczeń, na przykład do przyspieszenia funkcji bit_count wykorzystano instrukcje AVX-512.
  • Zrealizowano wsparcie dla nowych możliwości pracy z formatem JSON, określonych w standardzie SQL/JSON. Dodano funkcję JSON-TABLE do konwersji danych z formatu JSON do zwykłych tabel PostgreSQL, a także nowe operatory jsonpath do konwersji danych JSON na native dla PostgreSQL typy danych. Zaproponowano nowe funkcje do tworzenia (JSON, JSON_SCALAR i JSON_SERIALIZE) oraz zapytywania (JSON_EXISTS, JSON_QUERY i JSON_VALUE) danych w formacie JSON.
  • Rozszerzone możliwości polecenia SQL „MERGE”, które umożliwia tworzenie warunkowych wyrażeń SQL, łączących operacje INSERT, UPDATE i DELETE w jednym wyrażeniu. Dodano wsparcie dla wyrażenia RETURNING, umożliwiającego obliczanie i zwracanie wartości na podstawie dodanych, zaktualizowanych lub usuniętych wierszy. Wprowadzono wsparcie dla aktualizacji widoków.
  • Rozszerzone możliwości ładowania i eksportu danych w trybie zbiorczym. W poleceniu COPY przyspieszono eksport dużych wierszy do dwóch razy, zoptymalizowano kopiowanie przy zgodności kodowań źródłowego i docelowego, dodano opcję ON_ERROR, pozwalającą na kontynuację importu po napotkaniu błędów podczas wstawiania danych.
  • Dla tabel partycjonowanych dodano możliwość użycia kolumn z unikalnymi identyfikatorami oraz wsparcie dla techniki optymalizacji zapytań „Constraint exclusion”.
  • W mechanizmie łączenia zewnętrznych tabel Foreign Data Wrapper (postgres_fdw) wprowadzono możliwość przesyłania na zewnątrz serwer podzapytania „EXISTS” i „IN”.
  • Wprowadzono wbudowany, niezależny od platformy silnik do przetwarzania właściwości lokalnych „Collation”, używanych do określenia reguł sortowania i metod porównywania z uwzględnieniem znaczenia symboli (na przykład przy sortowaniu wartości liczbowych uwzględniane są znaki minus i kropki przed liczbą oraz różne sposoby zapisu, a przy porównaniach nie ma znaczenia rejestr symboli oraz obecność znaku akcentu). Nowy silnik gwarantuje jednolite zachowanie przy sortowaniu wyników zapytań, niezależnie od platformy, na której uruchamiany jest PostgreSQL.
  • W mechanizmie replikacji logicznej, umożliwiającym przesyłanie zmian wprowadzonych w bazie danych na inny serwer podczas dodawania, usuwania lub aktualizacji rekordów, uproszczono proces aktualizacji SGBD. Wcześniej, przechodząc na nową, znacznie większą wersję, konieczne było usunięcie slotów replikacji logicznej i ponowne synchronizowanie danych, natomiast teraz można obejść się bez usuwania slotów. Dla konfiguracji odpornych na awarie wprowadzono możliwość zarządzania przełączaniem na zapasowy serwer (failover) dla replikacji logicznej. Dodano nowe narzędzie pg_createsubscriber do przekształcania fizycznej repliki w nową replikę logiczną.
  • Dodano nową opcję „sslnegotiation” umożliwiającą bezpośrednie negocjowanie zabezpieczonych połączeń TLS z użyciem rozszerzenia ALPN.
  • Wprowadzono predefiniowaną rolę pg_maintain, która przyznaje użytkownikowi prawo do wykonywania operacji związanych z utrzymaniem bazy danych.
  • Do narzędzia pg_basebackup, używanego do tworzenia kopii zapasowych baz danych, dodano wsparcie dla kopii inkrementalnych. Zostało wprowadzone nowe narzędzie pg_combinebackup do rekonstrukcji pełnej kopii zapasowej z zestawu kopii inkrementalnych. Do narzędzia pg_dump dodano opcję „—filter” do selekcji obiektów do zrzutu.
  • Podczas analizy zapytań przy użyciu komendy SQL „EXPLAIN” wprowadzono możliwość wyświetlania czasu spędzonego na odczycie i zapisie lokalnych bloków w operacjach we/wy. Do komendy „EXPLAIN” dodano także dwie nowe opcje „MEMORY” i „SERIALIZE”, które pozwalają określić rozmiar używanej pamięci oraz czas poświęcony na konwersję danych do przesłania przez sieć.
  • Zapewniono wskaźnik postępu operacji VACUUM z indeksami.
  • Dodano systemowy widok pg_wait_events, który w połączeniu z widokiem pg_stat_activity pozwala na dokładniejsze zbadanie przyczyn, dla których aktywne sesje znajdują się w stanie oczekiwania.

Ź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