У меня есть локальная установка базы данных 9.1 с несколькими таблицами, которые имели cca. 300 миллионов записей и база данных выросли до 20 ГБ. После этого я дал delete from
команду удалить все записи из него (я должен был использовать truncate
, но я этого не знал). Поэтому я полностью опустошил свою базу данных, чтобы освободить место на диске, но это не помогло. Моя проблема выглядит идентично этой , но не предоставлено никакого решения. Я уже проверил этот поток и документацию по «восстановлению дискового пространства» , но все еще не могу найти решение. Я использую этот код, чтобы получить размер всех таблиц
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;
(без аргументов) и вставьте куда-нибудь вывод, затем ссылку на него здесь.