У мене локальна установка бази даних 9.1 з кількома таблицями, в яких було cca. 300 записів на міо та база даних зросла приблизно до 20 ГБ. Потім я видав delete from
команду видалити всі записи з неї (я повинен був використовувати truncate
, але я цього не знав). Тому я зробив повний вакуум на своєму db, щоб повернути місце на диску, але це просто не допомагає. Моя проблема виглядає ідентично цій , але рішення не передбачено. Я вже перевірив цю тему та документацію щодо "відновлення дискового простору" , але досі не можу знайти рішення. Я використовую цей код, щоб отримати розмір усіх таблиць
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;
Однак на суму менше 1 Гб
SELECT pg_database.datname, pg_size_pretty(pg_database_size(pg_database.datname)) AS size FROM pg_database
все ще показує близько 20 ГБ. Будь-яка порада дуже цінується.
pg_catalog
та таблиці вinformation_schema
. Тому спробуйте перевірити, чи є це хтось із цих, видаливши ці обмеження вWHERE
пункті. Покажіть, будь ласка, вашу точну версію PostgreSQL (SELECT version()
) і що саме ви робите для "вакуумування повної бази даних", тобто точної команди. Якщо можливо, запустітьVACUUM FULL VERBOSE;
(без аргументів) і вставте результат десь, а потім посилання на нього тут.