Tablespace nach DB Fehler zu groß

Hallo,

ich bin ein postgres Einsteiger und habe folgendes Anliegen:

Der Tablespace einer Datenbank wurde riesig nach einem DB Fehler und verbrauchte in kürzester Zeit den kompletten Speicher auf der Platte.
Der Fehler und damit auch der Speicherverbrauch konnten zwar behoben werden, allerdings ist der Tablespace nach wie vor sehr groß.
Momentan sehe ich hier im Tablespace Directory ca. 30 Dateien mit jeweils einer Größe von 1 GB.

Gibt es eine Möglichkeit diesen zu verkleinern/löschen?
Wir setzen übrigens Posgresql 10 ein. Habt ihr da eine Idee?

  • was für ein Fehler?
  • was wurde wie behoben?
  • Autovacuum läuft?

Zum Fehler kann ich nicht viel sagen. Hervorgerufen wurde der Fehler durch ein Update der darüberlingenden Anwendung die seitens des Herstellers später wieder behoben wurden. Anscheinend gab es diverse falsche Verlinkungen zur Datenbank.
Autovacuum ist momentan auskommentiert.

  • was zeigt in psql dieser Befehl an: “show autovacuum;” bzw. von einem SQL-Client aus “select setting from pg_settings where name = ‘autovacuum’;” an?
  • was zeigt “select pg_size_pretty(pg_database_size(‘test’));” an? (test mit dem Namen der DB ersetzen!)
  • wenn ihr für gewisse Zeit eine Downtime akzeptieren könnt: “vacuum full;” ACHTUNG: das erzeugt Sperren dergestallt, daß die Applikation für die Zeit, wo das läuft, nicht zugreifen kann, UND: es benötigt vorübergehend noch einmal bis ca. dem doppelten Platz, was jetzt schon belegt ist

Schon mal über einen Supportvertrag nachgedacht?

  1. on
  2. 31 GB
  3. Probiere ich aus, einfach “vacuum full”?

Okay, damit läuft Autovacuum. Ja, einfach “vacuum full;”, das wird aber einige Zeit dauern, alle Anwendungen auf der DB müssen warten und es kann vorübergehend noch einmal bis zu 31GB auf Platte belegen.

Vielen Dank, das hat schon geholfen. Die DB ist danach nur noch 2 GB groß. Was ich noch nicht verstehe ist, warum ist autovacuum auf on gestellt wenn es doch auskommentiert ist in der postgres.conf?

die postgresql.conf enthält alle möglichen zu setzenden Parameter, wenn Werte da auskommentiert stehen sind das die Default-Werte. Siehe auch die Datei selber, sie enthält diesen Kommenta:

# The commented-out settings shown in this file represent the default values.