SQLITE ??????

Vacuum

[?v?kju?m]

N ?? ???? ??.

SQLite ?? ?? ???

??: VACUUM ??? ?? ??????? ??? ?? ?????? ??? ??? ?? ?? ??????? ??? ????? ?? ?????? ??? ?? ?????. ??? ?? ?? ??? ???? ???? ???? ???? ????? ???? ?????? ?? ??? ?????. ???? ???? ?? ?? ?(INTEGER PRIMARY KEY)? ?? ?? VACUUM ??? ??? ??? ? ID(ROWID)? ??? ? ????. VACUUM ??? master ????????? ???? ??? ?????? ????? VACUUM ??? ??? ? ????. ?? ????? ??? VACUUM ??? ?????. VACUUM ??? ?? ??? ? ??????? ?? ?????. VACUUM ??? ?????? ??? ???? ?? ????? VACUUM? ???? ?? ??????? ?? ????? ??? ?? ????.

??: ??$sqlite3 ??????_?? "VACUUM;" sqlite> VACUUM ???_??;

SQLite ?? ?? ?

SQLite 的 Auto-VACUUM 與 VACUUM 不大一樣,它只是把空閑頁(yè)移到數(shù)據(jù)庫(kù)末尾,從而減小數(shù)據(jù)庫(kù)大小。通過(guò)這樣做,它可以明顯地把數(shù)據(jù)庫(kù)碎片化,而 VACUUM 則是反碎片化。所以 Auto-VACUUM 只會(huì)讓數(shù)據(jù)庫(kù)更小。

在 SQLite 提示符中,您可以通過(guò)下面的編譯運(yùn)行,啟用/禁用 SQLite 的 Auto-VACUUM:

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
您可以從命令提示符中運(yùn)行下面的命令來(lái)檢查 auto-vacuum 設(shè)置:

$sqlite3 database_name "PRAGMA auto_vacuum;"