SQLite Vacuum

    VACUUM命令通过复制主数据库中的内容到一个临时数据库文件,然后清空主数据库,并从副本中重新载入原始的数据库文件。这消除了空闲页,把表中的数据排列为连续的,另外会清理数据库文件结构。

    如果表中没有明确的整型主键(INTEGER PRIMARY KEY),VACUUM命令可能会改变表中条目的行ID(ROWID).

    VACUUM命令只适用于主数据库,附加的数据库文件是不可能使用VACUUM命令。

    如果有一个活动的事务,VACUUM命令就会失败。VACUUM命令是一个用于内存数据库的任何操作。由于VACUUM命令从头开始重新创建数据库文件,所以VACUUM也可以用于修改许多数据库特定的配置参数。

 

手动 VACUUM

    下面是在命令提示符中对整个数据库发出VACUUM命令的语法:

$sqlite3 database_name "VACUUM;"

   您也可以在SQLite提示符中运行VACUUM,如下所示:

sqlite> VACUUM;

   你也可以在特定的表上运行VACUUM,如下所示:

sqlite> VACUUM table_name;


自动VACUUM(Auto-VACUUM)

    SQLite的Auto-VACUUM与VACUUM不大一样,它只是把空闲页移到数据库末尾,从而减小数据库大小。通过这样做,它可以明显地数据库碎片化,而VACUUM则是返碎片化。所以Auto-VACUUM只会让数据库更小。在SQLite提示符中,你可以通过下面的编译运行,启用/禁用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

   你可以从命令提示符中运行下面的命令检查auto-vacuum的设置:

$sqlite3 database_name "PRAGMA auto_vacuum;"

参考:

https://www.yuque.com/docs/share/6a8e4616-c74d-43f8-af29-794e91811b71

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值