PostgreSQL VACUUM
Der `VACUUM`-Befehl in PostgreSQL wird verwendet, um den Datenbankspeicher zu bereinigen und zu optimieren, indem der von toten Tupeln belegte Speicherplatz zurückgewonnen wird. Sie sorgt für einen effizienten Betrieb der Datenbank, indem sie das Aufblähen verhindert und die Tabellen in einem guten Zustand hält.
Verwendung
Der Befehl "VACUUM" wird verwendet, um Speicherplatz zurückzugewinnen und die E/A-Leistung zu verbessern, indem veraltete Daten entfernt werden. Sie wird in der Regel verwendet, wenn Tabellen in größerem Umfang aktualisiert oder gelöscht wurden.
VACUUM [FULL] [FREEZE] [VERBOSE] [table_name];
In dieser Syntax folgt auf "VACUUM" ein optionaler Parameter:
- FULL" für eine gründlichere Bereinigung,
- FREEZE", um Tupel aggressiv als eingefroren zu markieren und so Probleme mit der Transaktions-ID zu vermeiden,
- `VERBOSE` für detaillierte Ausgaben,
- und `Tabellenname` gibt an, welche Tabelle gesaugt werden soll.
Beispiele
1. Basic Vakuum
VACUUM;
Mit diesem Befehl werden alle Tabellen in der aktuellen Datenbank gesaugt, um ungenutzten Speicherplatz freizugeben.
2. Eine bestimmte Tabelle absaugen
VACUUM VERBOSE employees;
In diesem Beispiel wird die Tabelle `Mitarbeiter` geleert und dank der Option `VERBOSE` eine detaillierte Ausgabe über den Vorgang geliefert.
3. Volles Vakuum auf einem Tisch
VACUUM FULL products;
VACUUM FULL" wird verwendet, um den Platz in der Tabelle "Produkte" vollständig freizugeben. Es sperrt die Tabelle während des Prozesses, was sowohl Schreib- als auch Lesevorgänge blockieren kann, aber eine maximale Wiederherstellung des Platzes ermöglicht.
Tipps und bewährte Praktiken
- Lauf regelmäßig. Planen Sie routinemäßige Vakuumoperationen, vor allem für häufig aktualisierte Tabellen, um ein Aufblähen der Datenbank zu verhindern.
- Erwäge, `AUTOVACUUM` zu verwenden. Aktiviere und konfiguriere `AUTOVACUUM`, um den Saugvorgang zu automatisieren und die manuelle Wartung zu reduzieren.
- Verwende "FULL" sparsam. Reserviere `VACUUM FULL` für Situationen, in denen viel Platz wiederhergestellt werden muss, da es die Tabelle sperrt und ressourcenintensiv sein kann.
- Überwache die Leistung. Verwende `VERBOSE`, um Einblicke in den Vakuumprozess zu erhalten und die Konfiguration anhand der Ergebnisse anzupassen.
- Verstehe den Transaktions-Wraparound. Leere regelmäßig Tabellen, um Probleme mit der Transaktions-ID zu vermeiden, die zu Datenverlusten führen können.
- Achte auf die Auswirkungen auf die Leistung. Ein Standard-VACUUM ist zwar weniger störend als ein `VACUUM FULL`, kann aber bei sehr großen Datenbanken die Leistung beeinträchtigen, also plane entsprechend.