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

Nowe i ewoluujące funkcje korporacyjne PostgreSQL w najnowszych wydaniach

PostgreSQL wprowadził również wiele innych przełomowych funkcji w wersjach od 10 do 11, 12 i 13, które czynią go prawdziwym konkurentem dla Oracle, takich jak ulepszenia partycjonowania, zapytania równoległe i replikacja logiczna. W tym poście na blogu zaprezentujemy niektóre z nowych i godnych uwagi funkcji PostgreSQL zawartych w nowszych wersjach PostgreSQL.

Funkcje partycjonowania

Partycjonowanie deklaratywne

Do wersji PostgreSQL 9.4 nie było partycjonowania w PostgreSQL. Udało się to osiągnąć tylko dzięki dziedziczeniu tabeli, które oferowało bardzo ograniczone korzyści w zakresie funkcjonalności i wydajności. Wiele funkcji jest zarządzanych ręcznie za pomocą wyzwalaczy lub poleceń SQL. Na przykład musieliśmy użyć wyzwalaczy, aby skierować wiersz przed INSERT do właściwej partycji. Musimy stworzyć indeksy dla każdej partycji osobno. PostgreSQL w wersji 10 dał początek deklaratywnemu partycjonowaniu, ale nadal musieliśmy tworzyć ograniczenia i indeksy dla każdej partycji.

PostgreSQL 11 jest dostarczany wraz z imponującym zestawem nowych funkcji partycjonowania, które zarówno pomagają poprawić wydajność, jak i sprawiają, że partycjonowane tabele są bardziej przejrzyste dla aplikacji.

Replikacja logiczna podzielonych na partycje tabel

W PostgreSQL 13 wprowadzono obsługę logicznej replikacji partycjonowanych tabel. Wcześniej trzeba było indywidualnie replikować partycje do rezerw. Teraz jednak możesz automatycznie replikować wszystkie partycje jednocześnie

Metody partycjonowania

Obecnie obsługiwane metody partycjonowania to zakres, lista i hash.

Klawisze i indeksy

Pełna obsługa kluczy obcych w tabelach podzielonych na partycje została dodana w PostgreSQL 12. PostgreSQL może również pochwalić się obsługą kluczy podstawowych, indeksów i wyzwalaczy w tabelach podzielonych na partycje.

Partycja domyślna

PostgreSQL umożliwia utworzenie „domyślnej” partycji do przechowywania danych, które nie pasują do żadnej z pozostałych partycji. Użytkownicy Oracle pokochają tę funkcję, ponieważ nie jest ona dostępna w Oracle Database.

Ruch rzędów

Instrukcje UPDATE zmieniające kolumnę klucza partycji powodują teraz przeniesienie wierszy, których dotyczy problem, do odpowiednich partycji.

Przycinanie partycji

Popraw wydajność SELECT dzięki ulepszonym strategiom eliminacji partycji podczas planowania i wykonywania zapytań. Dodano nowy sposób wykonywania likwidacji partycji. Ten nowy algorytm jest w stanie określić pasujące partycje, patrząc na klauzulę WHERE zapytania. Poprzedni algorytm sprawdzał po kolei każdą partycję, aby sprawdzić, czy może ona pasować do klauzuli WHERE zapytania. Spowodowało to dodatkowy wzrost czasu planowania wraz ze wzrostem liczby partycji.

Oczyszczanie partycji podczas wykonywania zapytania

Jeśli chodzi o instrukcje przygotowane, parametry zapytania nie są znane przed wykonaniem. Query Planner nie może wyeliminować partycji w fazie planowania, ponieważ parametry nie są znane. Tak więc executor wykonuje czyszczenie partycji podczas wykonywania, aby uzyskać dostęp tylko do partycji, które pasują do parametrów.

Nowe i ewoluujące funkcje PostgreSQL dla przedsiębiorstw z najnowszymi wersjamiKliknij, aby tweetować

Funkcje indeksowania

Indeks pokrycia

PostgreSQL umożliwia teraz dodawanie kolumn bez klucza w indeksie btree. Ponieważ zapytania zazwyczaj wymagają pobrania większej liczby kolumn niż tylko te, w których wyszukują, PostgreSQL umożliwia utworzenie indeksu, w którym niektóre kolumny są po prostu „ładunkiem” i nie są częścią klucza wyszukiwania. Pomaga w wykonywaniu tylko skanowania indeksów w celu pobrania wymaganych wierszy.

Ponowna indeksacja jednocześnie

Począwszy od PostgreSQL 12, możliwe jest przebudowanie indeksu z REINDEX RÓWNOLEGŁYM bez blokowania tabeli do odczytu/zapisu, tak jak polecenie Oracle REBUILD INDEX.

Tworzenie indeksu równoległego

Dzięki równoległemu tworzeniu indeksów (wprowadzone w PostgreSQL 11, obecnie stosowane tylko dla indeksów b-tree), indeksy można tworzyć szybciej do wartości max_parallel_workers i ustawiając maintenance_work_mem wystarczająco duże, aby pomieścić wiele kopie danych. Równoległe tworzenie indeksu może znacznie skrócić czas tworzenia indeksu.

Deduplikacja danych w indeksach B-Tree

Czasami w indeksie pojawiają się zduplikowane wpisy. Oznacza to, że węzeł-liść w indeksie B-drzewa z co najmniej dwoma wpisami indeksu w tym samym indeksie zawiera te same dane dla wszystkich kolumn indeksu. Dzięki dodaniu deduplikacji w PostgreSQL 13 możesz grupować te zduplikowane wpisy indeksu B-Tree i gromadzić je we wpisie grupowym. Zaletą tego jest oszczędność miejsca i mniejsze obciążenie dysku i pamięci RAM, ponieważ nie będziesz musiał duplikować danych w kolumnach. Zduplikowane wpisy powodują również niepożądane rozdęcie indeksu.

Uwierzytelnianie

SCRAM-SHA-256

W PostgreSQL 11 pojawiła się obsługa uwierzytelniania hasła SCRAM-SHA-256. Ta metoda zapobiega podsłuchiwaniu haseł w niezaufanych połączeniach i umożliwia przechowywanie haseł w postaci zaszyfrowanej kryptograficznie.

Spośród wszystkich obecnie obsługiwanych metod uwierzytelniania hasła ta jest najbezpieczniejsza.

GSSAPI

GSSAPI umożliwia bezpieczne uwierzytelnianie, a także automatyczne jednokrotne logowanie w systemach, które to obsługują. Ta metoda uwierzytelniania opiera się na bibliotece zabezpieczeń zgodnej z GSSAPI. Dane przesyłane przez połączenie z bazą danych będą niezaszyfrowane, chyba że zostanie użyty protokół SSL; jednak samo uwierzytelnianie jest bezpieczne. GSSAPI z uwierzytelnianiem Kerberos jest możliwe w PostgreSQL zgodnie ze standardami branżowymi. W przypadku korzystania z protokołu Kerberos używany jest standardowy podmiot zabezpieczeń w formacie „nazwa usługi/nazwa hosta@dziedzina”. Każdy zleceniodawca zawarty w karcie kluczy używanej przez serwer zostanie zaakceptowany przez serwer PostgreSQL.

LDAP

Działa podobnie do uwierzytelniania hasłem, ta metoda uwierzytelniania wykorzystuje LDAP jako metodę weryfikacji. Służy tylko do walidacji par nazwy użytkownika i hasła, dlatego użytkownik musi już istnieć w bazie danych, aby uwierzytelnianie zadziałało. Uwierzytelnianie LDAP działa albo w prostym trybie wiązania, albo w trybie zwanym search+bind. Search+bind pozwala na użycie innych identyfikatorów w porównaniu z prostym trybem wiązania, który pozwala na użycie tylko wyróżniającej nazwy, nazwy domeny lub adresu e-mail.

Certyfikat

Metoda uwierzytelniania certyfikatów wykorzystuje do uwierzytelniania certyfikaty SSL. W związku z tym jest dostępny tylko dla połączeń SSL. W przypadku uwierzytelniania certyfikatem hasło nie jest wymagane. Klient musi po prostu dostarczyć ważny i zaufany certyfikat, aby móc się uwierzytelnić. Nazwa pospolita certyfikatu zostanie dopasowana do nazwy użytkownika bazy danych, a jeśli zostanie znalezione dopasowanie, klient zostanie zalogowany.

Inne godne uwagi funkcje

Odkurzacz równoległy

Wraz z wydaniem PostgreSQL 13 zaimplementowano ulepszenia polecenia VACUUM. Omawiane ulepszenie to dodana opcja parametru RÓWNOLEGŁY. Z RÓWNOLEGŁYM można wykonywać indeksowe podciśnienie i indeksujące fazy czyszczenia podciśnienia. Pozwala to na równoległe odkurzanie wielu indeksów odpowiadających jednej tabeli.

Zapytanie równoległe

Większość zapytań raportów, które zazwyczaj skanują dużo danych, cierpi na pogorszenie wydajności z powodu konieczności skanowania lub agregowania danych z wielu wierszy, nawet przy skanowaniu indeksu. Te zapytania mogą używać tylko jednego procesora do wersji 9.4 i działać szeregowo.

W przypadku zapytań równoległych (które oferują równoległe skanowanie sekwencyjne, łączenie scalające, łączenie mieszające, agregujące i inne funkcje planu zapytań równoległych), zapytania te mogą korzystać z wielu procesów roboczych, a wydajność może popraw z 2x do 10x zgodnie z dokumentacją.

Sprawdź ten post, aby dowiedzieć się, kiedy używać zapytań równoległych.

Natywna replikacja logiczna

PostgreSQL wprowadził natywną replikację logiczną w wersji 10, aby zapewnić bardziej elastyczną opcję replikacji, w przeciwieństwie do replikacji strumieniowej i bardziej podobnych do Oracle Streams, do replikowania określonych tabel, kolumn lub wierszy. Może to służyć do dzielenia między wiele baz danych lub konsolidacji z wielu baz danych. Może również replikować się między różnymi głównymi wersjami PostgreSQL.

Procedury przechowywane z osadzonymi transakcjami

Kolejny dodatek, który sprawia, że ​​PostgreSQL jest kompatybilny z migracjami z bazy danych Oracle.

Nie mamy żadnej kontroli transakcji wewnątrz programu pgsql (blok DO lub funkcja) w wersji 9.4 i musimy użyć obejścia, takiego jak dblink, aby rozpocząć i zatwierdzić/wycofać transakcje .

Dzięki procedurom składowanym, które miały swoją premierę w wersji 11, możemy teraz zaimplementować kontrolę transakcji w ramach dowolnej struktury pgsql, takiej jak pętla while, pętla for lub instrukcja if else. Chociaż procedury składowane są podobne do funkcji, muszą być wywoływane przez polecenie CALL i mogą działać jako niezależne programy.

Wygenerowane kolumny

Podobnie jak baza danych Oracle, kolumny generowane w PostgreSQL mogą przechowywać dane automatycznie obliczone z innych kolumn w wierszu. Przyspiesza to zapytania, ponieważ nie trzeba obliczać wartości podczas wykonywania zapytania, a zamiast tego wygenerowana wartość kolumny jest obliczana podczas INSERT lub UPDATE do wiersza.

Kompilacja JIT

Wszystkie PostgreSQL 11, 12 i 13 obsługują kompilację Just-in-Time (JIT), która została dodana w 2018 roku. Kompilacja JIT to proces przekształcania zinterpretowanej oceny programu w natywny program. Dzięki kompilacji JIT proces ten można wykonać w czasie wykonywania. Zaletą JIT jest możliwość generowania funkcji specyficznych dla wyrażeń, które procesor może natywnie wykonywać. Z kolei proces ten przyspiesza.

Sumy kontrolne stron

Sumy kontrolne strony to funkcja, która pomaga zweryfikować integralność danych przechowywanych na dysku. Wcześniej sumy kontrolne stron można było włączyć tylko podczas inicjowania klastra PostgreSQL. PostgreSQL 12 wprowadził możliwość włączania lub wyłączania sum kontrolnych stron w klastrze offline za pomocą polecenia pg_checksums.

Podsumowanie

Jak widać z tego artykułu, PostgreSQL to stale ewoluujący system baz danych, który oferuje wiele zaawansowanych funkcji. Każda nowa wersja dodaje nowe, ekscytujące funkcje, które sprawiają, że jest prawdziwym konkurentem dla innych baz danych, takich jak Oracle. Jego funkcje partycjonowania i indeksowania otrzymują wiele nowych aktualizacji, które są dodawane do jego i tak już obszernego zestawu narzędzi.

Jeśli szukasz rozwiązania zarządzanego dla swojej bazy danych PostgreSQL, zachęcamy do skorzystania z naszej usługi ScaleGrid for PostgreSQL. Zapewniamy bezpłatną 30-dniową wersję próbną, która umożliwia korzystanie ze wszystkich naszych funkcji zarządzania bez ograniczeń. Ceny zaczynają się już od 10 USD miesięcznie i zapewniają dostęp do w pełni zarządzanego rozwiązania hostingowego PostgreSQL klasy korporacyjnej z obsługą 24/7.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy UUID jako klucz podstawowy w PostgreSQL da złą wydajność indeksu?

  2. Wybierz pierwszy rekord, jeśli żaden nie pasuje

  3. TypeError:obiekt „int” nie obsługuje indeksowania

  4. Rails 3.2 Postgres Save Error ActiveRecord::StatementInvalid:PG::Error:ERROR:Błąd składni w pobliżu 'T' na pozycji 5

  5. PostgreSQL:Wyszukiwanie pełnotekstowe - Jak wyszukiwać częściowe słowa?