Cała oryginalna treść jest tworzona po ukraińsku. Nie wszystkie treści zostały jeszcze przetłumaczone. Niektóre posty mogą być dostępne tylko po ukraińsku.Dowiedz się więcej
Bitte melde dich an, um fortzufahren.

Co to jest VACUUM w PostgreSQL?

Ta treść została automatycznie przetłumaczona z ukraińskiego.
W PostgreSQL istnieje mechanizm MVCC (więcej szczegółów poniżej) - wielowersyjność wierszy. Gdy aktualizujesz lub usuwasz dane, stare wersje wierszy nie znikają od razu. Pozostają w plikach tabel jako "martwy ładunek". Z czasem takich wierszy przybywa, tabele się rozrastają, indeksy tracą efektywność, a zapytania zaczynają działać wolniej.
Aby utrzymać bazę w zdrowym stanie, PostgreSQL wykorzystuje proces VACUUM. Usuwa on nieużywane wersje wierszy, zwalnia przestrzeń i pomaga aktualizować statystyki dla planera zapytań. To swoiste sprzątanie, które zazwyczaj nie wymaga ręcznego uruchamiania, ponieważ zazwyczaj działa automatyczny autovacuum.
Istnieje również VACUUM FULL - bardziej radykalna wersja. Nie tylko oczyszcza "śmieci", ale także fizycznie przebudowuje tabelę, zwracając miejsce systemowi plików. Cena - całkowite zablokowanie tabeli na czas operacji. Dlatego FULL używa się rzadko i głównie w nocnych oknach lub po masowych usunięciach.
Bez VACUUM PostgreSQL stopniowo degraduje: tabele rosną, indeksy tracą dokładność, zapytania stają się wolne, a autovacuum może zacząć działać zbyt agresywnie. Dlatego VACUUM - to nie tylko techniczne narzędzie, ale podstawowy mechanizm, który pozwala PostgreSQL utrzymywać wydajność przez długie lata.

MVCC (Multi-Version Concurrency Control) 

MVCC (Multi-Version Concurrency Control) - to sposób, w jaki PostgreSQL i inne systemy baz danych pozwalają wielu klientom jednocześnie czytać i zmieniać dane bez blokad, które paraliżują pracę.
W zwykłych bazach danych bez MVCC jednoczesne zapisy i odczyty mogą powodować konflikty. MVCC rozwiązuje to w ten sposób: gdy aktualizujesz wiersz, baza nie nadpisuje go na starym, lecz tworzy nową wersję. Stara pozostaje dostępna dla tych transakcji, które ją jeszcze "widzą". Każda transakcja działa z własnym zrzutem danych, nie przeszkadzając innym.
Zaletą jest prosta - czytelnicy nie blokują zapisu, a zapis nie blokuje czytelników. Dlatego PostgreSQL może obsługiwać dużą liczbę równoległych operacji bez istotnych opóźnień.
Wada jest również oczywista - stare wersje się kumulują. I to właśnie VACUUM odpowiada za to, aby te "martwe" wiersze usuwać i utrzymywać bazę w czystym stanie.
Podoba ci się?Zareaguj
🧵

Ten post nie ma jeszcze żadnych dodatków od autora.

Czym jest baza danych typu time-series?
22 lis '25 12:42

Czym jest baza danych typu time-series?

Нотатки про Ruby та RoR
Czym jest B-Tree (drzewo zrównoważone)?
22 lis '25 12:58

Czym jest B-Tree (drzewo zrównoważone)?

Нотатки про Ruby та RoR
Czym jest Elasticsearch i jak działa?
22 lis '25 12:35

Czym jest Elasticsearch i jak działa?

Нотатки про Ruby та RoR
Czym jest podejście Vanilla Rails?
14 lis '25 16:48

Czym jest podejście Vanilla Rails?

Нотатки про Ruby та RoR
Czym jest Middleware w Ruby on Rails i kiedy jest używane
4 lis '25 10:39

Czym jest Middleware w Ruby on Rails i kiedy jest używane

Нотатки про Ruby та RoR
Różnica między blank?, present?, empty? a nil? w Ruby
30 paź '25 21:06

Różnica między blank?, present?, empty? a nil? w Ruby

Нотатки про Ruby та RoR
Zmienne w Ruby: @, @@ oraz zmienna instancji klasy
30 paź '25 20:54

Zmienne w Ruby: @, @@ oraz zmienna instancji klasy

Нотатки про Ruby та RoR
Fix problem with installing Ruby 3.4.3 (and not only) via RVM on macOS (Apple Silicon)
30 gru '25 14:05

Fix problem with installing Ruby 3.4.3 (and not only) via RVM on macOS (Apple Silicon)

Нотатки про Ruby та RoR
Problem Grzmiącego Stada: co to jest i dlaczego łamie produkcję
15 sty '26 10:14

Problem Grzmiącego Stada: co to jest i dlaczego łamie produkcję

Нотатки про Ruby та RoR
Czym jest Exponential Backoff i Random Jitter?
15 sty '26 15:24

Czym jest Exponential Backoff i Random Jitter?

Нотатки про Ruby та RoR
Podłączenie usługi Elasticsearch do aplikacji Rails (Coolify w chmurze, serwer na Hetzner).
15 lut '26 13:45

Podłączenie usługi Elasticsearch do aplikacji Rails (Coolify w chmurze, serwer na Hetzner).

Нотатки про Ruby та RoR
„Brak miejsca na urządzeniu” - kiedy Docker zjadł cały dysk
15 lut '26 19:57

„Brak miejsca na urządzeniu” - kiedy Docker zjadł cały dysk

Нотатки про Ruby та RoR