Autovacuum w PostgreSQL

Autovacuum w PostgreSQL
Próżnia? Tak, koncepcja istnieje w bazach danych Postgres. Gdy rekord zostanie usunięty w Postgres, powstaje martwy krotek i przy pomocy polecenia próżniowego te martwe krotki można usunąć. Po usunięciu martwych krotek w tabeli jest wykonywane działanie analizy postgres w celu zaktualizowania statystyki. Aby zbiorowo i automatycznie wykonywać działania próżniowe i analizować działania, wykorzystywane jest polecenie Autovacuum Postgres. Wykonuje zarówno usunięcie, a następnie aktualizuje statystyki . Aby uzyskać bardziej dogłębne zrozumienie tego narzędzia Postgres, ten przewodnik jest skonstruowany w celu uzyskania wglądu i dobrego autowakuum w Postgres.

Jak działa Auto Vacuum Postgres

Autovacuum to proces tła w Postgres i jest domyślnie włączony. Możesz jednak uzyskać ustawienia autovacuum, nawigując do PostgreSQL.conf plik.

Jak omówiono wcześniej, próżnia auto wykonuje zarówno odkurzanie, jak i analizę. Postgres Analizuje i odkurza Solid na podstawie progu opisanego poniżej:

Do automatycznego progu odkurzania tabeli stosuje się następujące równanie:

Autovacuum próżniowy próg = autovacuum_vacuum_scale_factor * nie._of_tuples + autovacuum_vacuum_threshold

Aby uzyskać próg automatycznego analizy, wykonuje następujące równanie:

Autovacuum Analizuj próg = autovacuum_analyze_scale_factor * Liczba krotek + autovacuum_analyze_threshold

Terminologie zastosowane w powyższych sekcjach opisano w nadchodzącym rozdziale.

Jak skonfigurować Auto Vacuum Postgres

Automatyczna funkcjonalność Postgres zależy od ustawień i opcji dostępnych w PostgreSQL.plik CONF. Za pomocą opisu podanego poniżej możesz zmienić parametry, aby dostroić funkcję automatycznego próżniowego.

Poniższe parametry odgrywają kluczową rolę w definiowaniu zasad dla Postgres autovacuum.

  • autovacuum: Pokazuje domyślny status dla automatycznego wywołania próżniowego.
  • autovacuum_naptime: Wartość domyślną parametru to 60s (1 min), co wskazuje na różnicę między każdym automatycznym poborem próżniowym.
  • autovacuum_max_Workers: Procesy, które są odkurzane po drugie.
  • autovacuum_vacuum_scale_factor: Ten współczynnik kieruje próżni Auto, aby rozpocząć proces, gdy odsetek określonej wartości zostanie zmieniony. Jest domyślnie ustawiony na 20%, co oznacza, że ​​automatyczna próżnia zostanie wprowadzona, gdy 20% tabel/rekordów zostanie zaktualizowanych.
  • autovacuum_vacuum_threshold: Ten parametr zapewnia, że ​​automatyczna próżnia musi działać po określaniu (domyślnie 50) liczby tabel są aktualizowane/zmieniane.
  • autovacuum_analyze_scale_factor: Ten czynnik odnosi się do procesu analizy, który wykonuje auto próżni. Gdy określony procent rekordów jest aktualizowany/zmieniany, tabela przeprowadza analizę.
  • autovacuum_analyze_threshold: Gdy konkretne liczby tabel napotykają aktualizacje, a próg jest spełniony, automatyczna próżnia zaczyna analizować tabelę, a domyślna wartość tego parametru wynosi 50.

Aby edytować plik, możesz go otworzyć w edytorze nano za pomocą polecenia określonego poniżej (lokalizacja PostgreSQL.Plik CONF może się różnić w twoim przypadku):

$ sudo nano/etc/postgresql/12/main/postgresql.conf

Jak skonfigurować automatyczne parametry próżniowe dla tabeli

PostgreSQL.conf Plik dotyczy globalnych zmian w parametrach autovacuum. Jednak możesz dostroić parametry dla pojedynczej tabeli. Na przykład użyliśmy następujących parametrów dla Linuxhint Tabela bazy danych MYDB:

  • autovacuum_vacuum_scale_factor = 0.2
  • autovacuum_vacuum_threshold = 30
  • autovacuum_analyze_scale_factor = 0.2
  • autovacuum_analyze_threshold = 20

Parametry te zostaną przekazane z instrukcją Table PowerShell, a tabela alter zostanie zastosowana w tabeli Linuxhint, jak pokazano poniżej:

> Zmień tabelę linuxhint Set (autovacuum_vacuum_scale_factor = 0.2, autovacuum_vacuum_threshold = 30, autovacuum_analyze_scale_factor = 0.2, autovacuum_analyze_threshold = 20);

Można go obliczyć ręcznie, wkładając wartości w równaniach podanych w powyższej sekcji i jest następujące. Załóżmy, że tabela Linuxhint zawiera 10 krotek:

Obliczanie próżni Autovacuum jest obliczane, jak pokazano poniżej. Wyjście pokazuje, że działanie próżniowe autovacuum zostanie wykonane, gdy liczba przestarzałych rekordów osiągnie 31.

Autovacuum Próg próżniowy tabeli Linuxhint = (0.2 * 5) + 30 = 31

Podobnie, działanie analizy autovacuum w tabeli Linuxhint zostanie przeprowadzone, gdy liczba insercji/delecji/aktualizacji jest równa lub przekroczy 21.

Autovacuum Analiza tabeli Linuxhint = (0.2*5) + 20 = 21

Dlaczego auto próżni

Patrząc na działającą i powyższą dyskusję, można wydobyć następujące korzyści z próżni automatycznej:

  • Przestrzeni jest skutecznie zarządzane przez usuwanie martwych komórek
  • Czas analizy i odkurzania jest oszczędzany, ponieważ jest ono przeprowadzane automatycznie
  • Rozdęcie tabeli nie występuje, ponieważ usunięcie martwych krotek występuje automatycznie, a zatem tabela nie przepełnia.
  • Autovacuum może być przeprowadzane w równoległych manierach. Na przykład autovacuum nie blokuje tabeli, tak jak robi to próżnia ręczna.

Wniosek

Automatyczna funkcjonalność Postgres pozwala wykonać próżnię i analizować tabele bazy danych. Mimo że można odkurzyć i analizować ręcznie, zautomatyzowana próżnia zrobi oba. W tym artykule zawiera szczegółowe informacje o automatycznej funkcji próżniowej Postgres. Postgres oblicza wartości progowe dla każdej tabeli, a następnie decyduje, czy odkurzyć, czy przeanalizować tę tabelę. Ponadto zapewniliśmy równania Postgresa do obliczenia progu szczepień i analizy progu.