Saya memiliki instalasi lokal dari database 9.1 dengan beberapa tabel yang memiliki cca. 300 juta catatan dan basis data tumbuh sekitar 20 GB. Setelah itu saya mengeluarkan delete from
perintah untuk menghapus semua catatan dari itu (saya seharusnya menggunakan truncate
, tapi saya tidak tahu itu). Jadi saya melakukan vakum penuh pada db saya untuk merebut kembali ruang disk, tetapi itu tidak membantu. Masalah saya terlihat identik dengan yang satu ini , tetapi tidak ada solusi yang diberikan. Saya telah memeriksa utas ini dan dokumentasi tentang "memulihkan ruang disk" , tetapi masih tidak dapat menemukan solusi. Saya menggunakan kode ini untuk mendapatkan ukuran semua 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;
Namun, totalnya kurang dari 1GB
SELECT pg_database.datname, pg_size_pretty(pg_database_size(pg_database.datname)) AS size FROM pg_database
masih menunjukkan sekitar 20 GB. Setiap saran sangat dihargai.
pg_catalog
, dan tabel diinformation_schema
. Jadi coba lihat apakah itu salah satunya dengan menghapus batasan-batasan dalamWHERE
klausa. Tolong tunjukkan versi PostgreSQL yang tepat (SELECT version()
) dan apa yang sebenarnya Anda lakukan untuk "menyedot database lengkap", yaitu perintah yang tepat. Jika memungkinkan, jalankanVACUUM FULL VERBOSE;
(tanpa argumen) dan tempel output di suatu tempat kemudian tautkan ke sini.