Regelmäßige Wartungsarbeiten

Guten Tag,
habe vor kurzem meine privaten MySQL Datenbanken nach Postgresql verlegt.
Nun frage ich mich, was es alles für regelmäßige Wartungsarbeiten gibt, die erledigt werden sollten. Bisher gefunden habe ich:

ANALYZE aller Tabellen
VACUUM aller Tabellen
REINDEX aller Tabellen

Gibt es weitere? Und gibt es Kriterien, wann man eine solche Wartung durchführen sollte?
Es handelt sich nur um privat genutzte Daten. Zeitfenster für Wartung sind mehr als reichlich.
Auch die Datenmenge mit etwa 10 GB ist noch sehr übersichtlich.
Aber warum soll man sich mehr Arbeit als nötig machen? Und wie erkennt man was nötig ist?
Mit freundlichen Grüßen
Christian Ehm

analyze und vacuum sind eigentlich nie manuell notwendig. Wenn das System richtig konfiguriert ist, und keine langlaufenden Transaktionen existieren (z.B. Sessions im Status “idle in transaction”), dann macht Postgres das automatisch. vacuum analyze ist eigentlich nur wirklich notwendig wenn man sehr viele Datensätze auf einmal importiert oder löscht.

Bei REINDEX bin ich auch skeptisch. In vielen Fällen ist das auch nicht notwendig.

@castorp
Danke für deine schnelle Antwort :slight_smile:.
Aber was genau heißt den “richtig konfiguriert”? Langlaufende Transaktion dürfte es nicht geben.
Wäre natürlich schön, wenn man sich die Arbeit sparen könnte.

die default-config ist bei kleineren Datenbanken (10GB ist hier noch unterhalb von klein) schon passend.
Wenn die db größer wird, kann es Sinn machen, an Parametern z.B. für Autovacuum zu drehen.
Du solltest aber mal schauen, was Du an shared_buffers hast, das ist default sehr wenig. Wenn das ein dedizierter PG-Server ist, dann kannst Du das auf ca. 25% RAM stellen (Linux). Unter Windows, naja, eher so max. 4 oder 8 GB. Aber Windows verwendet von unseren Kunden faktisch keiner.

Wenn man sehr viele UPDATEs und DELETEs rund um die Uhr macht (also eine konstant hohe Last), dann muss man häufig autovacuum wesentlich aggressiver konfigurieren, da autovacuum dann in der Standardkonfiguration häufig nicht mehr “hinterherkommt” . Ich rede aber von tausenden Transaktionen pro Minute (ohne Pausen).

@akretschmer
Danke für den Hinweis, werde mir die shared_buffers Einstellung mal anschauen. Fahre übrigens auch unter Linux.
@castorp
Ebenfalls Danke für den Hinweis. Aber auf meinen Datenbanken ist wohl nicht so viel Last. Werde also bei den Standard Einstellungen bleiben. Abgesehen von obiger Einstellung der shared_buffers.