SQLite Vacuum

SQLite VACUUM 用于消除 SQLite 的空白页,把表中的数据排列为连续的,还会清理数据库文件结构

VACUUM 命令通过复制主数据库中的内容到一个临时数据库文件,然后清空主数据库,并从副本中重新载入原始的数据库文件

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

如果有一个活动的事务,VACUUM 命令就会失败

VACUUM 命令是一个用于内存数据库的任何操作

由于 VACUUM 命令从头开始重新创建数据库文件,所以 VACUUM 也可以用于修改许多数据库特定的配置参数。

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

手动 VACUUM

下面的 shell 命令用于向数据库 database_name 发出 VACUUM 命令

sqlite3 database_name "VACUUM;"

也可以在 SQLite 提示符中运行 VACUUM

VACUUM;

还可在特定的表 tablename 上运行 VACUUM 命令

VACUUM tablename;

查看当前某个数据库的 auto-vacuum 设置

可以使用下面的 shell 命令查看数据库 database_name auto-vacuum 启用情况

sqlite3 database_name "PRAGMA auto_vacuum;"

自动 VACUUM ( Auto-VACUUM )

与手动 VACUUM 不同,自动 VACUUM ( Auto-VACUUM ) 只把空闲页移到数据库末尾,从而减小数据库大小

我们可以在 SQLite 提示符中,使用 Pragma 命令 启用或禁用 Auto-VACUUM

比如禁用 Auto-VACUUM

sqlite> PRAGMA auto_vacuum = NONE;

比如启用 Auto-VACUUM 允许数据库文件随着数据从数据库移除而缩小

sqlite> PRAGMA auto_vacuum = INCREMENTAL;  -- 1 means enable incremental vacuum

启用完全的 Auto-VACUUM

sqlite> PRAGMA auto_vacuum = FULL;

SQLite 基础教程

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2018 简单教程 twle.cn All Rights Reserved.