Ich verwende eine PostgreSQL-Datenbank mit mehreren Tabellen, in denen Protokollinformationen gespeichert sind. Diese Informationen dienen nur zu Berichtszwecken und werden in eine Datei kopiert und aus der Datenbank gelöscht, wenn sie älter als 30 Tage sind.
Es können Millionen von Zeilen gelöscht werden, und wir haben jedes Mal nach dem Löschen einen REINDEX ausgeführt.
Ist das ausreichend oder sollten wir auch eine VACUUM- oder VACUUM-ANALYSE durchführen? Oder ist der REINDEX nicht notwendig und wir sollten stattdessen einfach eine VACUUM- oder VACUUM-ANALYSE ausführen?
Wir verwenden PostgreSQL 8.2.3, das meines Erachtens kein automatisches Staubsaugen erlaubt.
postgresql
database-performance
vacuum
Kuhgott
quelle
quelle
Antworten:
Sie sollten eine VACUUM-ANALYSE durchführen, da die VACUUM die Wiederverwendung des von den gelöschten Daten genutzten Speicherplatzes ermöglicht und einen Transaktionsumbruch verhindert. Die ANALYZE aktualisiert die Planerstatistiken, was zu besseren Abfrageplänen für Ihre Berichtsabfragen führen sollte.
Ein REINDEX ist theoretisch nicht erforderlich, aber Sie können feststellen, dass dies zu einer besseren Leistung führt, da der Index zusammenhängend ist.
Die entsprechenden Dokumentationsseiten für 8.2 finden Sie hier (Routine-Neuindexierung) und hier (Routine-Staubsaugen) .
quelle