Wie zu schrumpfen pg_toast Tabelle?

Mir läuft auf postgres 9.3 auf mac osx und ich haben eine Datenbank, geriet außer Kontrolle. Früher habe ich die Tabelle, die hatten eine Spalte die gespeicherten großen Datenmengen. Dann habe ich bemerkt, dass es die db-Größe wuchs um rund 19 GB, nur weil der ein pg_toast Tabelle. Dann Entferne ich die erwähnte Spalte und lief Vakuum, um die db auf eine kleinere Größe wieder, aber es blieb das gleiche. Also, wie kann ich schrumpfen die Größe der Datenbank?

 SELECT nspname || '.' || relname AS "relation"
       ,pg_size_pretty(pg_relation_size(C.oid)) AS "size" 
 FROM pg_class C 
     LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace) 
 WHERE nspname NOT IN ('pg_catalog', 'information_schema') 
 ORDER BY pg_relation_size(C.oid) DESC 
 LIMIT 20;

Ergebnisse in

 pg_toast.pg_toast_700305                    | 18 GB
 pg_toast.pg_toast_700305_index              | 206 MB
 public.catalog_hotelde_images               | 122 MB
 public.routes                               | 120 MB



    VACUUM VERBOSE ANALYZE pg_toast.pg_toast_700305;                                                                                                                                            INFO:  vacuuming "pg_toast.pg_toast_700305"
INFO:  index "pg_toast_700305_index" now contains 9601330 row versions in 26329 pages
DETAIL:  0 index row versions were removed.
0 index pages have been deleted, 0 are currently reusable.
CPU 0.06s/0.02u sec elapsed 0.33 sec.
INFO:  "pg_toast_700305": found 0 removable, 0 nonremovable row versions in 0 out of 2393157 pages
DETAIL:  0 dead row versions cannot be removed yet.
There were 0 unused item pointers.
0 pages are entirely empty.
CPU 0.06s/0.07u sec elapsed 0.37 sec.
VACUUM

Struktur der Routen-Tabelle

id serial NOT NULL,
  origin_id integer,
  destination_id integer,
  total_time integer,
  total_distance integer,
  speed_id integer,
  uid bigint,
  created_at timestamp without time zone,
  updated_at timestamp without time zone,
  CONSTRAINT routes_pkey PRIMARY KEY (id)
  • Die toast-Tabellen speichern Daten, die für jede "große" Spalte. Jeder Datentyp mit variabler Länge, wobei der tatsächliche Wert einen bestimmten Schwellenwert überschreitet, werden dort gespeichert. Vermutlich haben Sie andere Spalten, die dazu beitragen, die Tabelle Größe
  • Genau das ist es, was ich lese auch über die toast-Tabelle und ich Sie gelöscht, die Spalte, die große Datenmengen enthalten, nur sehr kleine Werte. Ich klebte die Struktur der Routen-Tabelle in den ursprünglichen post, da sieht man es.
  • Wie Sie wissen, diese toast-Tabellen gehören zu den routes Tabelle?
InformationsquelleAutor dc10 | 2015-01-19
Schreibe einen Kommentar