ฉันมีการติดตั้งฐานข้อมูลท้องถิ่น 9.1 กับตารางน้อยซึ่งมี cca บันทึก 300 mio และฐานข้อมูลเพิ่มขึ้นเป็นประมาณ 20 GB หลังจากนั้นฉันออก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;
อย่างไรก็ตามมีจำนวนน้อยกว่า 1GB
SELECT pg_database.datname, pg_size_pretty(pg_database_size(pg_database.datname)) AS size FROM pg_database
ยังคงแสดงประมาณ 20 GB คำแนะนำใด ๆ ที่ชื่นชมมาก
pg_catalog
และตารางinformation_schema
มา ดังนั้นลองดูว่ามันเป็นของใด ๆ โดยการลบข้อ จำกัด เหล่านั้นในWHERE
ข้อ โปรดแสดงเวอร์ชัน PostgreSQL ที่แน่นอนของคุณ (SELECT version()
) และสิ่งที่คุณทำเพื่อ "ดูดข้อมูลฐานข้อมูลทั้งหมด" เช่นคำสั่งที่แน่นอน หากเป็นไปได้ให้เรียกใช้VACUUM FULL VERBOSE;
(ไม่มีข้อโต้แย้ง) และวางผลลัพธ์ที่ใดก็ได้จากนั้นลิงก์ไปที่นี่