SQLite - VACUUM 命令



VACUUM 命令透過將資料庫內容複製到臨時資料庫檔案,然後從副本重新載入原始資料庫檔案來清理主資料庫。這將消除空閒頁面,使表資料連續對齊,並清理資料庫檔案結構。

VACUUM 命令可能會更改沒有顯式 INTEGER PRIMARY KEY 的表中條目的 ROWID。VACUUM 命令僅適用於主資料庫。無法對附加的資料庫檔案執行 VACUUM 操作。

如果存在活動事務,VACUUM 命令將失敗。對於記憶體資料庫,VACUUM 命令是空操作。由於 VACUUM 命令從頭開始重建資料庫檔案,因此 VACUUM 也可用於修改許多資料庫特定的配置引數。

手動 VACUUM

以下是從命令提示符發出整個資料庫的 VACUUM 命令的簡單語法:

$sqlite3 database_name "VACUUM;"

您也可以從 SQLite 提示符執行 VACUUM,如下所示:

sqlite> VACUUM;

您還可以對特定表執行 VACUUM,如下所示:

sqlite> VACUUM table_name;

自動 VACUUM

SQLite 自動 VACUUM 的作用與 VACUUM 不同,它只將空閒頁面移動到資料庫的末尾,從而減小資料庫大小。這樣做可能會嚴重碎片化資料庫,而 VACUUM 確保了碎片整理。因此,自動 VACUUM 只保持資料庫較小。

您可以透過在 SQLite 提示符下執行以下 pragma 來啟用/停用 SQLite 自動 vacuum:

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

您可以從命令提示符執行以下命令來檢查自動 vacuum 設定:

$sqlite3 database_name "PRAGMA auto_vacuum;"
廣告
© . All rights reserved.