Tôi đã cài đặt cục bộ cơ sở dữ liệu 9.1 với một vài bảng có cca. Bản ghi 300 mio và cơ sở dữ liệu đã tăng lên khoảng 20 GB. Sau đó tôi đã ban hành delete from
lệnh xóa tất cả các bản ghi khỏi nó (đáng lẽ tôi nên sử dụng truncate
, nhưng tôi không biết điều đó). Vì vậy, tôi đã thực hiện đầy đủ chân không trên db của mình để lấy lại dung lượng đĩa, nhưng nó không giúp được gì. Vấn đề của tôi trông giống hệt vấn đề này , nhưng không có giải pháp nào được cung cấp. Tôi đã kiểm tra chủ đề và tài liệu này về "phục hồi dung lượng đĩa" , nhưng vẫn không thể tìm ra giải pháp. Tôi sử dụng mã này để có được kích thước của tất cả các bảng
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;
Tổng cộng có ít hơn 1GB, tuy nhiên
SELECT pg_database.datname, pg_size_pretty(pg_database_size(pg_database.datname)) AS size FROM pg_database
vẫn hiển thị khoảng 20 GB. Lời khuyên nào cũng đánh giá cao.
pg_catalog
và bảng tronginformation_schema
. Vì vậy, hãy thử xem nếu đó là bất kỳ trong số đó bằng cách loại bỏ những hạn chế trongWHERE
điều khoản. Vui lòng hiển thị phiên bản PostgreQuery chính xác của bạn (SELECT version()
) và chính xác những gì bạn đang làm để "hút sạch cơ sở dữ liệu đầy đủ", tức là lệnh chính xác. Nếu có thể, hãy chạyVACUUM FULL VERBOSE;
(không có đối số) và dán đầu ra ở đâu đó sau đó liên kết với nó ở đây.