vacuumdb -z -f -v -d “photosupreme”
So weit läuft das. Was ich nicht verstehe ist, wenn ich später mit:
SELECT
schemaname, relname,
last_vacuum, last_autovacuum,
vacuum_count, autovacuum_count
FROM pg_stat_user_tables;
es anzeigen will wann vacuum bzw. autowacuum gelaufen ist, stehen die Zeilen leer da und die Counter immer auf 0.
An sich dachte ich mir, dass bei den *last Spalten das letzte Datum eingetragen wird wann es gelaufen ist und bei count insgesamt die Zahl wie viele male es gelaufen ust.
Denkfehler von mir oder muss bei PG 14 es etwas anders aussehen?
Ich glaube durch Zufall habe ich den Fehler so zu sagen gefunden.
Führe ich eben vacuumdb Befehl aus, also außerhalb von PG, werden die Daten nicht aktualisiert (zumindest bei mir nicht). Führe ich aber vacuum aus psql aus, werden die Daten aktualisiert.
also, Peter Eisentraut, einer der Core-Entwickler, meint: “Ich kann mir nicht vorstellen, dass das Absicht ist.”. Das passiert übrigens auch bei VACUUM in psql, wenn es ein FULL ist. Mal sehen, was andere dazu noch sagen, aber ich schätze mal, es ist ein Bug und wird gefixt werden.
Jein. Peter war auf Reisen (FOSDEM) und hat nicht allzu tief drüber nachgedacht, denke ich mal. Ein VACUUM FULL ist von der Funktion schon deutlich anders als ein ‘normales’ Vacuum. Bei FULL wird die Tabelle faktisch kopiert, also es geht alle sichtbaren Records durch und schreibt die in eine neue Datei. Daher ist die Tabelle auch komplett gesperrt und Du brauchst temporär und max. noch einmal so viel Platz wie die Tabelle belegt - nämlich dann, wenn alle Tupel sichtbar sind. Ein Vacuum ohne FULL arbeitet komplett anders.
Daher auch der von mir zitierte Satz von John Naylor.
Ja das ist mir so weit auch klar. Full ist aber auch so viel ich weiß die einzige Variante wo der belegte Speicherplatz wieder frei wird. Deswegen so ganz darauf verzichten will ich nicht.
ein normales gibt auch Speicher frei - wenn ‘hinten’ 1 oder mehr Blöcke frei sind. Und wenn in den Blöcken ein bestimmter Prozentsatz ‘frei’ ist kann dieser z.B. bei HOT-Updates genutzt werden. Das ist also per se nicht unbedingt was schlechtes, wenn ein normales Vacuum den Platz nur als wieder verwendbar markiert und nicht physisch an das OS zurück gibt. Ein FULL ist in vielen Anwendungen eh kaum machbar - wenn Du sehr große Tabellen hast und 24*7 die DB im Einsatz ist.