2017-09-28 1 views
0

Ok, hier ist die Frage. Ich habe einige Tabelle, die ich schaffen wieTablesize und Array Text [] in Postgresql

Tabelle Mathematik ( id1 bytea , ID2 bytea , Kommentartext [] )

schaffen es mehr Spalten ist, aber das ist unbedeutend. Nach der Erstellung einfügen I ~ 500k Zeilen dort und ändern sie durch mehrere Abfragen jedes von ihnen enthält

array_append (Kommentare, ‚Einige Kommentar über die aktuellen Berechnungsschritt‘)

Und schließlich wird getan, was ich bekommen table ca. 1.6GB des

Wenn dann betreibe ich

ALTER TABLE Mathematik COLUMN Kommentare TYPE varchar ALTER [] Kommentare UNTER VERWENDUNG :: varchar [];

die table fällt deutlich auf ca. ~ 300Mb des

Warum ist das passiert? Und wie kann ich ähnliche Ergebnisse erhalten, ohne den Spaltentyp zu ändern?

Hinweis: Ich habe versucht, Spalte auf Varchar [] Typ bei der Erstellung festlegen, aber nach allen Abfragen wird es immer noch 1,6 GB in Größe und Konvertierung in Text [] reduziert es auf 300 MB wieder.

Antwort

0

Die ALTER TABLE .. ALTER TYPE .. führt eine vollständige Tabellenumschreibung durch, die die Tabelle und die Indizes komprimiert.

Sie würden stattdessen das gleiche Ergebnis von VACUUM FULL tablename; erhalten.

text und varchar haben genau identische Speicher.