PostgreSQL 11: Ewolucja partycjonowania od Postgres 9.6 do Postgres 11

Miłego piątku wszystkim! Do rozpoczęcia kursu pozostało coraz mniej czasu „Relacyjny system zarządzania bazą danych”, dlatego dzisiaj udostępniamy tłumaczenie kolejnego przydatnego materiału na ten temat.

Na etapie rozwoju PostgreSQL 11 Wykonano imponującą pracę, aby ulepszyć partycjonowanie tabeli. Tabele partycjonowania - jest to funkcja, która istniała w PostgreSQL już od dłuższego czasu, jednak, że tak powiem, w zasadzie nie istniała aż do wersji 10, w której stała się bardzo przydatną funkcją. Wcześniej stwierdziliśmy, że dziedziczenie tabeli jest naszą implementacją partycjonowania i jest to prawdą. Tylko ta metoda zmusiła Cię do wykonania większości pracy ręcznie. Na przykład, jeśli chcesz, aby krotki były wstawiane do sekcji podczas INSERT, musiałbyś skonfigurować wyzwalacze, aby zrobiły to za Ciebie. Partycjonowanie poprzez dziedziczenie było bardzo powolne i trudne do opracowania dodatkowej funkcjonalności.

W PostgreSQL 10 byliśmy świadkami narodzin „partycjonowania deklaratywnego”, funkcji zaprojektowanej w celu rozwiązania wielu problemów, których nie dało się rozwiązać przy użyciu starej metody dziedziczenia. Doprowadziło to do znacznie potężniejszego narzędzia, które pozwoliło nam dzielić dane w poziomie!

Porównanie funkcji

PostgreSQL 11 wprowadza imponujący zestaw nowych funkcji, które pomagają poprawić wydajność i sprawić, że partycjonowane tabele będą bardziej przejrzyste dla aplikacji.

PostgreSQL 11: Ewolucja partycjonowania od Postgres 9.6 do Postgres 11
PostgreSQL 11: Ewolucja partycjonowania od Postgres 9.6 do Postgres 11
PostgreSQL 11: Ewolucja partycjonowania od Postgres 9.6 do Postgres 11
1. Stosowanie wyjątków ograniczających
2. Dodaje tylko węzły
3. Tylko w przypadku tabeli podzielonej na partycje odnoszącej się do tabeli niepartycjonowanej
4. Indeksy muszą zawierać wszystkie kluczowe kolumny partycji
5. Ograniczenia sekcji po obu stronach muszą być zgodne

produktywność

Tutaj też mamy dobrą wiadomość! Dodano nową metodę usuwanie sekcji. Ten nowy algorytm może określić odpowiednie sekcje na podstawie warunku zapytania WHERE. Poprzedni algorytm z kolei sprawdzał każdą sekcję, aby określić, czy może spełnić warunek WHERE. Spowodowało to dodatkowe wydłużenie czasu planowania w miarę wzrostu liczby sekcji.

W wersji 9.6, z partycjonowaniem poprzez dziedziczenie, kierowanie krotek do partycji zwykle odbywało się poprzez napisanie funkcji wyzwalającej, która zawierała serię instrukcji JEŻELI, aby wstawić krotkę do właściwej partycji. Wykonywanie tych funkcji może być bardzo powolne. Dzięki partycjonowaniu deklaratywnemu dodanemu w wersji 10 działa to znacznie szybciej.

Korzystając z podzielonej tabeli zawierającej 100 partycji, możemy ocenić wydajność ładowania 10 milionów wierszy do tabeli zawierającej 1 kolumnę BIGINT i 5 kolumn INT.

PostgreSQL 11: Ewolucja partycjonowania od Postgres 9.6 do Postgres 11

Wydajność wykonywania zapytań do tej tabeli w celu znalezienia jednego indeksowanego rekordu i wykonania DML w celu manipulowania jednym rekordem (przy użyciu tylko 1 procesora):

PostgreSQL 11: Ewolucja partycjonowania od Postgres 9.6 do Postgres 11

Tutaj widzimy, że wydajność każdej operacji znacznie wzrosła od wersji PG 9.6. Upraszanie SELECT wyglądają znacznie lepiej, szczególnie te, które mogą wykluczać wiele partycji podczas planowania zapytań. Oznacza to, że planista może pominąć wiele pracy, którą powinien był wykonać wcześniej. Na przykład ścieżki nie są już budowane dla niepotrzebnych sekcji.

wniosek

Partycjonowanie tabel staje się bardzo potężną funkcją PostgreSQL. Umożliwia szybkie wyświetlanie danych online i przenoszenie ich do trybu offline, bez czekania na zakończenie powolnych, masowych operacji DML.. Oznacza to również, że powiązane dane można przechowywać razem, co oznacza, że ​​dostęp do potrzebnych danych jest znacznie efektywniejszy. Ulepszenia wprowadzone w tej wersji nie byłyby możliwe bez programistów, recenzentów i osób zatwierdzających, którzy niestrudzenie pracowali nad wszystkimi tymi funkcjami.
Dzięki im wszystkim! PostgreSQL 11 wygląda fantastycznie!

Oto taki krótki, ale dość ciekawy artykuł. Podziel się swoimi komentarzami i nie zapomnij się zarejestrować Dzień Otwarty, w ramach którego szczegółowo zostanie przedstawiony program kursu.

Źródło: www.habr.com

Dodaj komentarz