2009-05-29 6 views
1

Ich habe ein seltsames Problem. Die Größe meines PostgreSQL (8.3) nimmt zu. Also machte ich einen Dump und säuberte dann die Datenbank und importierte den Dump erneut. Die Datenbankgröße wurde um ca. 50% reduziert.PostgreSQL Datenbankgröße steigt

Einige Informationen: (1) AUTOVACUUM und REINDEX laufen regelmäßig im Hintergrund. (2) Datenbankcodierung ist ASCII. (3) Datenbankstandort:/database/pgsql/data (4) System: Suse-Ent. 10.

Irgendwelche Hinweise

+1

Ich empfehle dies auf serverfault.com – Elijah

Antwort

4

Wenn die toten Tupel über das hinausgehen, was in max_fsm_pages berücksichtigt werden kann, kann ein regulärer VACUUM nicht alles befreien. Das Endergebnis ist, dass die Datenbank im Laufe der Zeit immer größer wird, wenn sich der Totraum weiter anhäuft. Das Ausführen eines VACUUM FULL sollte dieses Problem beheben. Leider kann es in einer großen Datenbank sehr lange dauern.

Wenn Sie häufig auf dieses Problem stoßen, müssen Sie entweder häufiger saugen (Autovacuum kann hier helfen) oder erhöhen Sie die max_fsm_pages Einstellung. Wenn Sie VACUUM VERBOSE ausführen, wird Ihnen angezeigt, wie viele Seiten freigegeben wurden, und Sie erhalten eine Warnung, wenn max_fsm_pages überschritten wurde. Dies kann Ihnen dabei helfen festzustellen, wie dieser Wert aussehen sollte. Weitere Informationen finden Sie im Handbuch. http://www.postgresql.org/docs/8.3/static/runtime-config-resource.html#RUNTIME-CONFIG-RESOURCE-FSM

Glücklicherweise löst die Sichtbarkeitskarte von 8.4 dieses Problem. Despesz hat eine großartige Geschichte zu diesem Thema wie immer: http://www.depesz.com/index.php/2008/12/08/waiting-for-84-visibility-maps/

+0

VACUUM FULL hilft – stanleyxu2005

1

Ohne weitere Einzelheiten über Ihre speziellen Setup zu wissen, geschätzt werden, kommen ein paar Dinge zu beachten. Wenn AUTOVACUUM ausgeführt wird, wird versucht, Speicherplatz freizugeben, und können Sie überprüfen, ob es sich um Serverprotokolle handelt?

Zweitens, insbesondere wenn die vorherige Antwort nein war, sind Ihre AUTOVACUUM-Werte möglicherweise falsch. Ich würde empfehlen, Folgendes zum Thema zu lesen: http://www.postgresql.org/docs/8.3/interactive/routine-vacuuming.html#AUTOVACUUM

1

laufenden Reindex sollte nicht notwendig sein.

run Datenbank weit Vakuum mit ausführlichen, und überprüfen Sie die letzten Zeilen für fsm Einstellungen Hinweis - vielleicht ist es was falsch ist.

1

Haben Sie auch eine VACUUM FULL versucht? (Warnung, es sperrt Ihre Datenbank für eine lange Zeit.) Ich bin mir nicht sicher, dass AUTOVACUUM ist so eifrig ...

1

Wenn Sie noch nicht, überprüfen Sie Ihr System für lang laufende Leerlauf-Transaktionen. Sie verhindern, dass VACUUM (manuell und automatisch) Platz freimacht.

Verwandte Themen