SQLite VACUUM命令
VACUUM命令通过将主数据库的内容复制到临时数据库文件并重新加载原始数据库文件来清理主数据库。这将消除空闲页面,使表数据对齐,并清理数据库文件结构。
VACUUM命令可能会改变没有显式INTEGER PRIMARY KEY的表中条目的ROWID。VACUUM命令仅适用于主数据库,无法对附加的数据库文件进行VACUUM操作。
如果存在活动事务,VACUUM命令将失败。对于内存数据库,VACUUM命令不起作用。由于VACUUM命令从头开始重建数据库文件,因此还可以用来修改许多特定于数据库的配置参数。
手动VACUUM
以下是从命令提示符发出整个数据库的VACUUM命令的简单语法-
$sqlite3 database_name "VACUUM;"
你可以在 SQLite 提示符下运行 VACUUM,如下所示 −
sqlite> VACUUM;
您还可以按如下方法对特定表进行VACUUM操作−
sqlite> VACUUM table_name;
自动清理
SQLite的自动清理(Auto-VACUUM)与常规的清理(VACUUM)并不一样,它只是将空闲页面移到数据库末尾,从而减小数据库大小。这样做可能会导致数据库明显碎片化,而常规的清理(VACUUM)则确保了碎片整理。因此,自动清理仅仅保持数据库的小尺寸。
您可以通过以下的指令来在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;"