PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Co nowego w PostgreSQL 13?

PostgreSQL, znany również jako najbardziej zaawansowana na świecie baza danych open source, ma nową wersję od 24 września 2020 r., a teraz jest dojrzały, możemy sprawdzić, co nowego tam jest, aby zacząć myśleć o plan migracji. PostgreSQL 13 jest dostępny z wieloma nowymi funkcjami i ulepszeniami. W tym blogu wspomnimy o niektórych z tych nowych funkcji i zobaczymy, jak wdrożyć lub zaktualizować swoją aktualną wersję PostgreSQL.

Nowe funkcje i ulepszenia PostgreSQL 13

Zacznijmy wspominać o niektórych nowych funkcjach i ulepszeniach tej wersji PostgreSQL 13, które można zobaczyć w oficjalnej dokumentacji.

Partycjonowanie

  • Zezwalaj na wycinanie partycji i łączeń na partycje w większej liczbie przypadków

  • Obsługa wyzwalaczy na poziomie wiersza PRZED wyzwalaczami w tabelach podzielonych na partycje

  • Zezwalaj na logiczną replikację partycjonowanych tabel za pośrednictwem publikacji

  • Zezwalaj na logiczną replikację do podzielonych na partycje tabel dla subskrybentów

  • Zezwalaj na używanie zmiennych obejmujących cały wiersz w wyrażeniach partycjonujących

Indeksy

  • Bardziej wydajne przechowywanie duplikatów w indeksach B-drzewa

  • Zezwalaj indeksom GiST i SP-GiST w kolumnach na obsługę pól ORDER BY <-> zapytania punktowe

  • Zezwalaj na wydajniejszą obsługę indeksów GIN! (NIE) klauzule w wyszukiwaniu tsquery

  • Zezwalaj klasom operatorów indeksu na przyjmowanie parametrów

Optymalizator

  • Popraw szacowanie selektywności optymalizatora dla operatorów zawierania/dopasowania

  • Zezwalaj na ustawienie celu statystyk dla statystyk rozszerzonych

  • Zezwalaj na użycie wielu obiektów statystyk rozszerzonych w jednym zapytaniu

  • Zezwalaj na używanie rozszerzonych obiektów statystycznych dla klauzul OR i list stałych IN/ANY

  • Zezwalaj na wywoływanie funkcji w klauzulach FROM (w linii), jeśli mają one wartości stałe

Wydajność

  • Zaimplementuj sortowanie przyrostowe i popraw wydajność sortowania wartości inet

  • Zezwalaj agregacji skrótu na używanie pamięci dyskowej dla dużych zestawów wyników agregacji

  • Zezwalaj na wstawianie, a nie tylko aktualizacje i usuwanie, wyzwalanie czynności odkurzania w autoodkurzaniu

  • Dodaj parametr maintenance_io_concurrency, aby kontrolować współbieżność we/wy dla operacji konserwacyjnych

  • Zezwalaj na pomijanie zapisów WAL podczas transakcji, która tworzy lub przepisuje relację, jeśli wal_level jest minimalny

  • Zwiększ wydajność podczas odtwarzania poleceń DROP DATABASE, gdy używanych jest wiele obszarów tabel

  • Przyspiesz konwersję liczb całkowitych na tekst

  • Zmniejsz użycie pamięci przez ciągi zapytań i skrypty rozszerzeń, które zawierają wiele instrukcji SQL

Monitorowanie

  • Zezwalaj EXPLAIN, auto_explain, autovacuum i pg_stat_statements na śledzenie statystyk użytkowania WAL

  • Zezwalaj na rejestrowanie próbki instrukcji SQL, a nie wszystkich instrukcji

  • Dodaj typ zaplecza do csvlog i opcjonalnie log_line_prefix wyjścia logu

  • Poprawa kontroli nad logowaniem parametrów przygotowywanych instrukcji

  • Dodaj Leader_pid do pg_stat_activity, aby zgłosić proces przywódcy pracownika równoległego

  • Dodaj widok systemowy pg_stat_progress_basebackup, aby raportować postęp przesyłania strumieniowego podstawowych kopii zapasowych

  • Dodaj widok systemowy pg_stat_progress_analyze, aby raportować postęp ANALIZY

  • Dodaj widok systemowy pg_shmem_allocations, aby wyświetlić wykorzystanie pamięci współdzielonej

Replikacja i odzyskiwanie

  • Zezwalaj na zmianę ustawień konfiguracji replikacji strumieniowej przez ponowne wczytanie

  • Zezwalaj odbiornikom WAL na używanie tymczasowego gniazda replikacji, gdy nie określono stałego gniazda

  • Zezwalaj na ograniczenie pamięci WAL dla gniazd replikacji przez max_slot_wal_keep_size

  • Zezwalaj promocji trybu gotowości na anulowanie żądanej pauzy

  • Wygeneruj błąd, jeśli odzyskiwanie nie osiąga określonego celu odzyskiwania

  • Zezwalaj na kontrolowanie ilości pamięci używanej przez logiczne dekodowanie przed rozlaniem jej na dysk

  • Zezwalaj na kontynuowanie odzyskiwania, nawet jeśli WAL odwołuje się do nieprawidłowych stron

Polecenia narzędziowe

  • Zezwalaj VACUUM na równoległe przetwarzanie indeksów tabeli

  • Raportuj wykorzystanie buforu czasu planowania w danych wyjściowych EXPLAIN BUFFER

  • Zrób CREATE TABLE LIKE propaguj właściwość NO INHERIT ograniczenia CHECK do utworzonej tabeli

  • Dodaj ALTER TABLE ... DROP EXPRESSION, aby umożliwić usunięcie właściwości GENERATED z kolumny

  • Dodaj składnię ALTER VIEW, aby zmienić nazwy kolumn widoku

  • Dodaj opcje ALTER TYPE, aby zmodyfikować właściwości TOAST typu podstawowego i funkcje pomocnicze

  • Dodaj opcję CREATE DATABASE LOCALE

  • Zezwól DROP DATABASE na rozłączanie sesji przy użyciu docelowej bazy danych, dzięki czemu upuszczenie się powiedzie

I wiele innych zmian. Wspomnieliśmy tylko o niektórych z nich, aby uniknąć większego posta na blogu. Zobaczmy teraz, jak wdrożyć tę nową wersję.

Jak wdrożyć PostgreSQL 13

W tym celu założymy, że masz zainstalowany ClusterControl, w przeciwnym razie możesz postępować zgodnie z odpowiednią dokumentacją, aby go zainstalować.

Aby przeprowadzić wdrożenie z ClusterControl, po prostu wybierz opcję Wdróż i postępuj zgodnie z wyświetlanymi instrukcjami.

Wybierając PostgreSQL, musisz określić Użytkownika, Klucz lub Hasło oraz Port aby połączyć się przez SSH z Twoimi serwerami. Możesz również dodać nazwę dla swojego nowego klastra i jeśli chcesz, aby ClusterControl zainstalował dla Ciebie odpowiednie oprogramowanie i konfiguracje.

Po skonfigurowaniu informacji dostępu SSH należy zdefiniować poświadczenia bazy danych , wersja i katalog danych (opcjonalnie). Możesz także określić, którego repozytorium chcesz użyć.

W następnym kroku musisz dodać swoje serwery do klastra, który zamierzasz utworzyć przy użyciu adresu IP lub nazwy hosta.

W ostatnim kroku możesz wybrać, czy twoja replikacja będzie synchroniczna, czy Asynchronicznie, a następnie po prostu naciśnij Wdróż.

Po zakończeniu zadania możesz zobaczyć swój nowy klaster PostgreSQL w główny ekran ClusterControl.

Teraz masz już utworzony klaster, możesz wykonać na nim kilka zadań, jak dodawanie systemów równoważenia obciążenia (HAProxy), puli połączeń (PgBouncer) lub nowych urządzeń podrzędnych replikacji z tego samego interfejsu użytkownika ClusterControl.

Aktualizacja do PostgreSQL 13

Jeśli chcesz zaktualizować swoją aktualną wersję PostgreSQL do nowej, masz trzy główne opcje, które wykonają to zadanie.

  • Pg_dump:Jest to logiczne narzędzie do tworzenia kopii zapasowych, które pozwala zrzucić dane i przywrócić je w nowym PostgreSQL wersja. Tutaj będziesz mieć czas przestoju, który będzie się różnić w zależności od rozmiaru danych. Musisz zatrzymać system lub uniknąć nowych danych w węźle podstawowym, uruchomić pg_dump, przenieść wygenerowany zrzut do nowego węzła bazy danych i przywrócić go. W tym czasie nie możesz pisać do swojej podstawowej bazy danych PostgreSQL, aby uniknąć niespójności danych.

  • Pg_upgrade:Jest to narzędzie PostgreSQL do aktualizacji Twojej wersji PostgreSQL na miejscu. Może to być niebezpieczne w środowisku produkcyjnym i w takim przypadku nie zalecamy tej metody. Korzystając z tej metody, również będziesz mieć przestój, ale prawdopodobnie będzie on znacznie krótszy niż przy użyciu poprzedniej metody pg_dump.

  • Replikacja logiczna:Od wersji PostgreSQL 10 możesz używać tej metody replikacji, która umożliwia przeprowadzanie uaktualnień głównych wersji za pomocą zerowy (lub prawie zerowy) czas przestoju. W ten sposób można dodać węzeł zapasowy w ostatniej wersji PostgreSQL, a gdy replikacja jest aktualna, można przeprowadzić proces przełączania awaryjnego, aby promować nowy węzeł PostgreSQL.

Więcej szczegółowych informacji na temat nowych funkcji PostgreSQL 13 można znaleźć w oficjalnej dokumentacji.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Co to jest PostgreSQL?

  2. Utwórz kopię zapasową PostgreSQL za pomocą pg_dump i pg_dumpall

  3. Postgres/JSON - zaktualizuj wszystkie elementy tablicy

  4. RoR:Nie można zmienić kolumny w postgresie, dobrze w MySQL (MySQL do rozwoju, Postgres na Heroku)

  5. Funkcja MIN() w PostgreSQL