SQLite VACUUM/真空
VACUUM命令清除其內容複製到臨時數據庫文件,並重新加載原始數據庫文件從副本的主數據庫。這消除了空白頁,對齊表中的數據是連續的,否則清理數據庫文件結構。
VACUUM命令可能會改變的ROWID表中的條目,冇有一個明確的INTEGER PRIMARY KEY。VACUUM命令隻適用於主數據庫。這是不可能的VACUUM附加的數據庫文件。
如果有一個活動的事務VACUUM命令就會失敗。VACUUM命令是一個用於內存數據庫的任何操作。 VACUUM命令從頭開始重新生成的數據庫文件,VACUUM也可以用於修改許多特定於數據庫的配置參數。
手動 VACUUM
以下是簡單的語法整個數據庫從命令提示符發出VACUUM命令:
$sqlite3 database_name "VACUUM;"
可以運行真空SQLite的提示如下:
sqlite> VACUUM;
還可以運行特定表上的VACUUM如下:
sqlite> VACUUM table_name;
自動VACCUM
SQLite 自動VACUUM不會做同樣的VACUUM,而是隻將免費網頁數據庫,從而減小數據庫大小的末尾。通過這樣做,它可以顯著數據庫碎片化,而VACUUM確保碎片整理。所以自動VACUUM保持數據庫小。
可以啟用/禁用SQLite的自動真空以下編譯運行在SQLite的提示:
sqlite> PRAGMA auto_vacuum = NONE; -- 0 means disable auto vacuum sqlite> PRAGMA auto_vacuum = INCREMENTAL; -- 1 means enable incremental vacuum sqlite> PRAGMA auto_vacuum = FULL; -- 2 means enable full auto vacuum
可以從命令提示符中運行以下命令檢查自動真空設置:
$sqlite3 database_name "PRAGMA auto_vacuum;"