VACUUM ANALYZE - Wann sollte man es ausführen ?

Hallo,

ich wollte mal nachfragen, wann vacuum analyze ausgeführt werden sollte.
Postgres hat ja per default autovacuum aktiviert, wo vacuum und analyze ausgeführt wird.

Kann mir jemand erklären ob bzw. wann ich vacuum analyze selbstständig ausführen sollte ?
Vielen Dank im Voraus.

Gruß
Manuel

Typischerweise macht man sowas nach einem Bulk-Load oder wenn man eine große Anzahl von Datensätzen gelöscht hat und der Optimizer sofort darauf reagieren soll. Wenn Deine Statements trotzdem gut laufen dann ist das nicht unbedingt notwendig?

Was ist denn ein Bulk-Load? Im-/Export größere Datenmengen?


Als Beispiel: Ich hab eine Tabelle mit einem BLOB-Feld und setze nun alle BLOBS auf null (7.000 Records, ca 80MB).
Ich hätte angenommen das ich danach ein vacuum analyze oder sogar ein vacuum full analyze ausführen sollte.
Vacuum full stukuriert die Daten ja zudem um, sodass Speicherplatz freigegeben werden kann. Das Backup blieb aber unverändert groß (vor vacuum full war das backup genauso groß wie danach).

So ganz klar ist mir das alles noch nicht…

Wenn ihr mit BLOB’s ned klar kommt (was nicht weiter schlimm ist…), dann nehmt doch BYTEA.

Import


Als Beispiel: Ich hab eine Tabelle mit einem BLOB-Feld und setze nun alle BLOBS auf null (7.000 Records, ca 80MB).
Ich hätte angenommen das ich danach ein vacuum analyze oder sogar ein vacuum full analyze ausführen sollte.
Vacuum full stukuriert die Daten ja zudem um, sodass Speicherplatz freigegeben werden kann.

vacuum analyze dient dazu die Statistiken über die Daten zu erneuern z.B. die Anzahl der Datensätze oder wie oft ein Wert in einer Spalte vorkommt (abhängig davon macht es z.B. Sinn einen Index zum Lesen der Daten zu nehmen oder nicht). Binärdaten (“blobs”, “bytea”) gehen aber niemals in die Statistik ein, und um das Aufräumen des Platzes kümmert sich Postgres dann schon wenn es notwendig ist. Bei dem Beispiel von Dir ist weder ein vacuum analyze noch ein vacuum full notwendig.
Als Faustregel kannst Du Dir merken: eigentlich musst Du es nie selber manuell aufrufen.

Typischerweise macht man sowas nach einem Bulk-Load oder wenn man eine große Anzahl von Datensätzen gelöscht hat und der Optimizer sofort darauf reagieren soll. Wenn Deine Statements trotzdem gut laufen dann ist das nicht unbedingt notwendig?