pg_squeeze to rozszerzenie PostgreSQL typu open source, które umożliwia automatyczne i przejrzyste naprawianie rozdętych tabel – bez rozbudowanego blokowania. Proces w pełni działa w tle.

KLUCZOWE ZALETY

  • Bardziej agresywna redukcja przestrzeni
  • Reorganizacja tabel niemal bez blokad
  • Możliwość przenoszenia tabel między obszarami tabel (bez przestojów)
  • Możliwość grupowania tabel (bez przestojów)
  • Wbudowane zaawansowane planowanie
  • W pełni otwarte oprogramowanie (open source)

pg_squeeze nie zastępuje autovacuum – jest dodatkiem umożliwiającym jeszcze lepsze czyszczenie.

PostgreSQL używa mechanizmu o nazwie MVCC (Multi Version Concurrency Control) do przechowywania danych. Jak sama nazwa wskazuje, MVCC będzie przechowywać różne wersje wiersza, aby obsługiwać jak najwięcej współbieżności. W pewnym momencie te dodatkowe rzędy należy usunąć z systemu pamięci masowej i właśnie tam pojawia się VACUUM.

W przeciwieństwie do wbudowanych poleceń „VACUUM FULL” lub CLUSTER, w przypadku „pg_squeeze” nie ma dłuższych okresów blokowania pełnej tabeli, w związku z czym odczyty i zapisy nie są blokowane podczas przebudowy. Również proces przebudowy jest bardzo wydajny ze względu na nowatorskie podejście polegające na wykorzystaniu plików dziennika transakcji i logicznego dekodowania (zamiast wyzwalaczy) w celu uchwycenia możliwych zmian danych w przebudowywanej tabeli. Przede wszystkim pomaga to zaoszczędzić miejsce na dysku i przepustowość IO, ale co ważniejsze, umożliwia bardzo krótkie czasy blokowania, dzięki czemu idealnie pasuje do krytycznych systemów OLTP.

Jak działa pg_squeeze?

  1. Rozszerzenie jest implementowane jako proces roboczy w tle (schemat wprowadzony w wersji 9.4), które okresowo monitoruje tabele zdefiniowane przez użytkownika.
  2. Gdy wykryje, że tabela przekroczyła „bloat threshold”.
  3. Automatycznie uruchamia i odbudowuje tabelę.

 

 

Odbudowywanie odbywa się jednocześnie w tle przy minimalnym nakładzie pamięci i obciążeniach obliczeniowych dzięki zastosowaniu wbudowanych gniazd replikacji Postgres wraz z logicznym dekodowaniem w celu wyodrębnienia możliwych zmian w tabeli podczas przebudowy z XLOG. Próg rozdęcia jest oczywiście konfigurowalny, a obliczanie współczynnika rozdęcia opiera się na Free Space Map (uwzględniając FILLFACTOR) lub pod pewnymi warunkami na rozszerzeniu „pgstattuple”, gdy jest ono dostępne. Ponadto można ustawić wiele parametrów dostosowywania, takich jak „minimalny rozmiar tabeli”, ignorując nieodpowiednie tabele. Ponadto możliwa jest zmiana kolejności przy użyciu indeksu lub przeniesienie tabeli lub indeksów do nowego obszaru tabel.

PG_SQUEEZE 1.3 POBIERANIE

Najnowszą wersję pg_squeeze można pobrać ze strony github.com.

github.com

Licencja

  • Licencja PostgreSQL

FAQ

P: Czy to jest bezpieczne? Co się stanie, gdy nastąpi awaria zasilania podczas przebudowy tabeli?

Odp: Tak, jest bezpieczny, ponieważ odbudowa odbywa się w transakcji. Ponadto można również ustawić maksymalny czas blokady, aby rozszerzenie mogło ograniczyć czas potrzebny na przełączenie tabeli.

P: Czym różni się od „pg_repack”?

Odp: Różni się tym, że jest bardziej przyjazny dla zasobów, ponieważ nie używa wyzwalaczy, sam określa automatycznie rozdęte tabele i nie wymaga użycia osobnego narzędzia wiersza poleceń.

P: Jakie są wymagania dotyczące przebudowywania tabel?

Odp: Poza osiągnięciem „bloat threshold”, jedynym wymaganiem zakodowanym na stałe jest to, że tabela musi mieć klucz tożsamości, definiując w ten sposób klucz podstawowy lub unikalne ograniczenie.

P: Czy jest  obsługiwana 13 wersja PostgreSQL?

Odp: Tak, w najnowszej aktualizacji jest.

Chcesz wiedzieć więcej o pg_squeeze?

SKONTAKTUJ SIĘ Z NAMI >>