Mam lokalną instalację bazy danych 9.1 z kilkoma tabelami, które zawierały cca. 300 milionów rekordów, a baza danych wzrosła do około 20 GB. Następnie wydałem delete from
polecenie usunięcia z niego wszystkich rekordów (powinienem był użyć truncate
, ale nie wiedziałem o tym). Więc zrobiłem pełną próżnię na mojej db, aby odzyskać miejsce na dysku, ale to po prostu nie pomaga. Mój problem wygląda identycznie jak ten , ale nie ma rozwiązania. Sprawdziłem już ten wątek i dokumentację dotyczącą „odzyskiwania miejsca na dysku” , ale nadal nie mogę znaleźć rozwiązania. Używam tego kodu, aby uzyskać rozmiar wszystkich tabel
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;
Jednak w sumie mniej niż 1 GB
SELECT pg_database.datname, pg_size_pretty(pg_database_size(pg_database.datname)) AS size FROM pg_database
nadal pokazuje około 20 GB. Wszelkie porady bardzo mile widziane.
pg_catalog
i tabele winformation_schema
. Spróbuj więc sprawdzić, czy to którykolwiek z nich, usuwając ograniczenia wWHERE
klauzuli. Pokaż dokładnie swoją wersję PostgreSQL (SELECT version()
) i co dokładnie robisz, aby „odkurzyć pełną bazę danych”, tj. Dokładne polecenie. Jeśli to możliwe, uruchomVACUUM FULL VERBOSE;
(bez argumentów) i wklej gdzieś wynik, a następnie link do niego tutaj.