Ich arbeite mit einer PostgreSQL 8.4.13 Datenbank.
Kürzlich hatte ich rund 86,5 Millionen Datensätze in einer Tabelle. Ich habe fast alle gelöscht - nur noch 5000 Datensätze sind übrig. Ich lief
und
%Vor%nach dem Löschen der Zeilen. Aber ich sehe immer noch, dass die Tabelle einen großen Speicherplatz belegt:
%Vor%Auch der Indexwert der verbleibenden Zeilen ist noch ziemlich hoch - wie im Millionenbereich. Ich dachte, nach dem Saugen und Neuindexieren würde der Index der restlichen Zeilen bei 1 beginnen.
Ich habe die Dokumentation gelesen und es ist ziemlich klar, dass mein Verständnis der Neuindizierung verzerrt war.
Aber meine Absicht ist es, die Tabellengröße nach dem Löschen zu reduzieren und die Indexwerte herunterzusetzen, so dass die Leseoperationen ( SELECT
) aus der Tabelle nicht so lange dauern - im Moment brauche ich ungefähr 40 Sekunden Nur einen Datensatz aus meiner Tabelle abrufen.
Danke Erwin. Ich habe die Versionsnummer von pg korrigiert.
%Vor% hat für mich funktioniert. Ich habe eine Follow-up-Frage hier:
Startet die Primärschlüsselnummern der vorhandenen Zeilen nach dem Löschen des größten Teils einer großen Tabelle
Um tatsächlich Speicherplatz auf dem Betriebssystem zurückzugeben, führen Sie VACUUM FULL
.
Viel mehr Details in diesem in Verbindung stehende jüngste Antwort auf dba.SE .
Tags und Links postgresql postgresql-8.4 vacuum