SQLite - สูญญากาศ

คำสั่ง VACUUM ล้างฐานข้อมูลหลักโดยการคัดลอกเนื้อหาไปยังไฟล์ฐานข้อมูลชั่วคราวและโหลดไฟล์ฐานข้อมูลต้นฉบับจากสำเนา วิธีนี้จะกำจัดเพจว่างจัดแนวข้อมูลตารางให้ติดกันและล้างโครงสร้างไฟล์ฐานข้อมูล

คำสั่ง VACUUM อาจเปลี่ยน ROWID ของรายการในตารางที่ไม่มีคีย์หลัก INTEGER อย่างชัดเจน คำสั่ง VACUUM ใช้ได้กับฐานข้อมูลหลักเท่านั้น เป็นไปไม่ได้ที่จะ VACUUM ไฟล์ฐานข้อมูลที่แนบมา

คำสั่ง VACUUM จะล้มเหลวหากมีธุรกรรมที่ใช้งานอยู่ คำสั่ง VACUUM คือ no-op สำหรับฐานข้อมูลในหน่วยความจำ เนื่องจากคำสั่ง VACUUM สร้างไฟล์ฐานข้อมูลใหม่ตั้งแต่เริ่มต้น VACUUM ยังสามารถใช้เพื่อแก้ไขพารามิเตอร์คอนฟิกูเรชันเฉพาะฐานข้อมูลจำนวนมาก

คู่มือสุญญากาศ

ต่อไปนี้เป็นไวยากรณ์ง่ายๆในการออกคำสั่ง VACUUM สำหรับฐานข้อมูลทั้งหมดจากพรอมต์คำสั่ง -

$sqlite3 database_name "VACUUM;"

คุณสามารถเรียกใช้ VACUUM จาก SQLite prompt ได้ดังต่อไปนี้ -

sqlite> VACUUM;

คุณยังสามารถเรียกใช้ VACUUM บนตารางเฉพาะได้ดังนี้ -

sqlite> VACUUM table_name;

สูญญากาศอัตโนมัติ

SQLite Auto-VACUUM ไม่ทำเช่นเดียวกับ VACUUM แต่เพียงแค่ย้ายเพจว่างไปยังส่วนท้ายของฐานข้อมูลซึ่งจะช่วยลดขนาดฐานข้อมูล การทำเช่นนี้สามารถแยกส่วนฐานข้อมูลได้อย่างมีนัยสำคัญในขณะที่ VACUUM ช่วยให้มั่นใจได้ว่าการจัดเรียงข้อมูล ดังนั้น Auto-VACUUM จึงทำให้ฐานข้อมูลมีขนาดเล็ก

คุณสามารถเปิด / ปิดการใช้งานการดูดฝุ่นอัตโนมัติของ SQLite โดย pragmas ต่อไปนี้ที่รันที่พรอมต์ SQLite

sqlite> PRAGMA auto_vacuum = NONE; -- 0 means disable auto vacuum
sqlite> PRAGMA auto_vacuum = FULL; -- 1 means enable full auto vacuum
sqlite> PRAGMA auto_vacuum = INCREMENTAL; -- 2 means enable incremental vacuum

คุณสามารถรันคำสั่งต่อไปนี้จากพรอมต์คำสั่งเพื่อตรวจสอบการตั้งค่าสูญญากาศอัตโนมัติ -

$sqlite3 database_name "PRAGMA auto_vacuum;"