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.
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).
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?