Dylemat Dead Row: Postgres 13 Odkurzanie
Odkurzanie to ważne zadanie konserwacyjne w PostgreSQL, które pomaga odzyskać miejsce i poprawić wydajność. W tym artykule omówimy, czym jest odkurzanie, dlaczego jest konieczne i jak je wykonać w PostgreSQL 13.
Co to jest odkurzanie w PostgreSQL?
Odkurzanie w PostgreSQL 13 to proces, który pomaga odzyskać miejsce i poprawić wydajność poprzez usunięcie martwych wierszy z tabel. W PostgreSQL, gdy wiersz jest usuwany lub aktualizowany, stara wersja wiersza nie jest natychmiast usuwana z tabeli. Zamiast tego jest oznaczany jako „martwy” i pozostawiany na miejscu do czasu wykonania operacji próżniowej. Operacja próżniowa skanuje stół i odzyskuje miejsce zajmowane przez te martwe rzędy.
Kiedy wiersz jest usuwany lub aktualizowany, PostgreSQL oznacza starą wersję wiersza jako „martwą”, zamiast fizycznie usuwać ją z tabeli. Ma to na celu zachowanie spójności w przypadku wycofania lub awarii. Jednak w miarę gromadzenia się coraz większej liczby martwych wierszy tabela staje się większa i trudniejsza do przeskanowania przez bazę danych, co może prowadzić do niskiej wydajności zapytań i zwiększonego wykorzystania miejsca na dysku.
Dlaczego odkurzanie jest konieczne?
Odkurzanie jest konieczne z kilku powodów:
Wydajność : w miarę gromadzenia się większej liczby martwych wierszy w tabeli tabela staje się większa i trudniejsza do przeskanowania przez bazę danych. Może to prowadzić do niskiej wydajności zapytania.
Przestrzeń : martwe wiersze mogą zajmować znaczną ilość miejsca, zwłaszcza w dużych tabelach. Odkurzanie odzyskuje to miejsce, co może pomóc zapobiec wyczerpaniu miejsca na dysku w bazie danych.
Indeksowanie : martwe wiersze mogą również wpływać na wydajność indeksów. Odkurzanie może pomóc poprawić wydajność indeksów, usuwając z nich martwe wiersze.
Istnieją dwa rodzaje odkurzania w PostgreSQL
Autovacuum : Jest to proces działający w tle, który uruchamia się automatycznie i okresowo odkurza stoły. Jest domyślnie włączony w PostgreSQL i można go skonfigurować za pomocą ustawień autovacuum_* w pliku postgresql.conf.
Próżnia ręczna : Jest to proces ręczny, który można wykonać za pomocą polecenia PRÓŻNI. Może być używany do odkurzania określonych tabel lub wszystkich tabel w bazie danych. Może być również używany do odkurzania stołu o określonej konfiguracji, takiej jak odkurzanie tylko wolnej przestrzeni, odkurzanie pełnego stołu, analiza próżni.
Należy zauważyć, że odkurzanie może wymagać dużej ilości zasobów i może powodować tymczasowe obniżenie wydajności podczas jego działania. Dlatego generalnie najlepiej jest zaplanować odkurzanie w okresach niskiej aktywności bazy danych, na przykład podczas okien konserwacyjnych lub w nocy.
Jak odkurzyć w PostgreSQL 13
W tym samouczku przejdziemy przez wszystkie etapy odkurzania w PostgreSQL 13.
Krok 1 : Połącz się z bazą danych
Aby rozpocząć, połącz się z bazą danych za pomocą narzędzia wiersza poleceń psql lub narzędzia GUI, takiego jak pgAdmin.
Krok 2 : Sprawdź stan tabeli
Przed odkurzaniem dobrze jest sprawdzić stan stołu, który chcesz odkurzyć. Możesz użyć polecenia \d, aby zobaczyć szczegóły tabeli, w tym liczbę martwych wierszy.
Krok 3 : Uruchom polecenie VACUUM
Aby odkurzyć określoną tabelę, możesz użyć polecenia VACUUM, po którym następuje nazwa tabeli. Na przykład, aby odkurzyć tabelę „pracownicy”, uruchom następujące polecenie.
VACUUM employees;
VACUUM;
Po odkurzeniu warto zaktualizować statystyki tabeli za pomocą polecenia ANALIZA. Zapewni to, że planista zapytań będzie miał dokładne informacje o tabeli, co może poprawić wydajność zapytań.
ANALYZE employees;
Gdy próżnia działa, możesz monitorować jej postęp, sprawdzając widok systemowy pg_stat_progress_vacuum. Ten widok pokazuje postęp wszystkich aktualnie uruchomionych odkurzaczy.
Krok 6 : Ponownie sprawdź stan tabeli
Po zakończeniu odkurzania dobrze jest ponownie sprawdzić stan tabeli za pomocą polecenia \d. Powinieneś zauważyć spadek liczby martwych wierszy i wzrost ilości wolnego miejsca.
Plusy i minusy odkurzania w PostgreSQL
Zalety :
Poprawia wydajność : Odkurzanie może poprawić wydajność zapytań, usuwając martwe wiersze i odzyskując miejsce.
Zmniejsza wykorzystanie miejsca na dysku : Odkurzanie może pomóc w zapobieganiu wyczerpania miejsca na dysku w bazie danych poprzez odzyskanie miejsca zajmowanego przez martwe wiersze.
Wady :
Zasobożerne : odkurzanie może być operacją zasobochłonną, szczególnie w przypadku dużych stołów. Może to spowodować tymczasowe pogorszenie wydajności podczas pracy odkurzacza.
Czasochłonne : Odkurzanie może zająć dużo czasu, zwłaszcza na dużych stołach.
Podsumowując, odkurzanie jest niezbędnym zadaniem konserwacyjnym w PostgreSQL, które pomaga odzyskać miejsce i poprawić wydajność. Wykonując czynności opisane w tym artykule, możesz łatwo odkurzyć tabele w PostgreSQL 13 i zapewnić płynne działanie bazy danych. Jednak ważne jest, aby rozważyć zalety i wady odkurzania przed kontynuowaniem.

![Czym w ogóle jest lista połączona? [Część 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































