Reindex nötig ?

Hi zusammen,

wir haben hier auf unserem Testserver (Suse 10.2, PostgreSQL 8.2.4) und haben folgende Beobachtung gemacht:

Wie schon aus dem Post im Forum “Konfiguration” (Auto Vacuum funktioniert nicht richtig) zu sehen ist, haben wir mit Autovacuum ein paar Probleme (gehabt? ist im Test). Gleichzeitig mit der Größe der Tabelle wächst auch der Index auf dem PK mit, nach einem Vacuum Full ist der Index jedoch immer noch genausogroß wie vorher.
Vorher hatte die Tabelle 495 MB und der Index 210MB, nach dem Vacuum hatte die Tabelle 5 MB und der Index immer noch 210 MB.
Daher folgende Fragen:

  • Vacuum ändert nicht die Größe des Index (Nehme ich an, will nur sicher sein)?
  • Der Index indiziert auch die Datensätze, die nicht mehr gültig sind, bzw. legt für eine Datensatzkopie, die nach einem Update angelegt wurde einen neuen Indexeintrag an ?
  • Gibt es eine Methode außer Reindex die Indices wieder zu verkleinern ?
  • Ist generell ein automatischer Reindex notwendig, und evtl wie oft (täglich, wöchentliche etc, die Doku schweigt sich da leider aus)? Gibt es da Erfahrungswerte?

Danke für die Antworten

Hi zusammen,

hat zu dem Thema keiner eine Ahnung oder einen Kommentar ? Ich hätte gedacht, das wäre etwas, was einem Admin doch relativ früh auffallen sollte und irgendwie darauf reagiert.

Evtl kann doch noch jemand einen Kommentar dazu abgeben, wie er das Problem (wenn es denn eines ist) in den Gruff bekommt.

Danke

Sagen wir mal so: ich habe solche Probleme noch nie beobachtet. Lege doch die problematischen Indexe mal komplett neu an und beobachte, was ab dann passiert.

Andreas

HI zusammen,

wir haben jetzt alle Indices neu angelegt und mal über mehrere Tage beobachtet und anscheinend ist die Größe des Index direkt abhängig von der Größe der Tabelle auf der Platte (nicht von der Anzahl der gültigen Datensätze in der Tabelle).
D.h. wenn das Autovacuum aus irgendeinen Grund die Tabelle über längere Zeit nicht bearbeitet und dadurch die Anzahl der nicht mehr benötigten Tupel ansteigt, wird auch der Index entsprechend größer.
Wenn Autovacuum regelmäßig läuft und die Tabelle nicht weiterwächst, bleibt auch die Größe des Index stabil.
Bitte richtig verstehen. Es geht nicht darum, dass in eine Tabelle immer weiter neue Datensätze eingefügt werden, sondern der Index immer weiter wächst, obwohl im Regelfall immer nur Updates auf der Tabelle gemacht werden.

Außerdem wird die Größe des Index nicht durch ein Vacuum Full verändert, sondern man muß wirklich einen Reindex anstossen.

erscheint logisch. Die Tupel sind ja noch da, und werden so auch indiziert.

Wenn Autovacuum regelmäßig läuft und die Tabelle nicht weiterwächst, bleibt auch die Größe des Index stabil.
Bitte richtig verstehen. Es geht nicht darum, dass in eine Tabelle immer weiter neue Datensätze eingefügt werden, sondern der Index immer weiter wächst, obwohl im Regelfall immer nur Updates auf der Tabelle gemacht werden.

Außerdem wird die Größe des Index nicht durch ein Vacuum Full verändert, sondern man muß wirklich einen Reindex anstossen.

Danke, das ist nicht wirklich erklärbar. Oder?

Andreas