位置:首頁 > 數據庫 > SQLite基礎教程 > SQLite VACUUM/真空

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;"