Ho un'installazione locale del database 9.1 con poche tabelle che avevano cca. 300 milioni di record e il database è cresciuto fino a circa 20 GB. Successivamente ho dato il delete from
comando di eliminare tutti i record da esso (avrei dovuto usarlo truncate
, ma non lo sapevo). Quindi ho fatto il pieno vuoto sul mio db per recuperare spazio su disco, ma non mi è stato di aiuto. Il mio problema sembra identico a questo , ma non è stata fornita alcuna soluzione. Ho già controllato questo thread e la documentazione sul "recupero dello spazio su disco" , ma non riesco ancora a trovare una soluzione. Uso questo codice per ottenere la dimensione di tutte le tabelle
SELECT nspname || '.' || relname AS "relation",
pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size"
FROM pg_class C
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
WHERE nspname NOT IN ('pg_catalog', 'information_schema')
AND C.relkind <> 'i'
AND nspname !~ '^pg_toast'
ORDER BY pg_total_relation_size(C.oid) DESC
LIMIT 15;
Per un totale di meno di 1 GB, tuttavia
SELECT pg_database.datname, pg_size_pretty(pg_database_size(pg_database.datname)) AS size FROM pg_database
mostra ancora circa 20 GB. Qualche consiglio molto apprezzato.
pg_catalog
e tabelle ininformation_schema
. Quindi prova a vedere se è uno di quelli rimuovendo quelle restrizioni nellaWHERE
clausola. Mostra la versione esatta di PostgreSQL (SELECT version()
) e cosa stai facendo esattamente per "svuotare l'intero database", ovvero il comando esatto. Se possibile, eseguiVACUUM FULL VERBOSE;
(senza argomenti) e incolla l'output da qualche parte, quindi collega ad esso qui.