VACUUM 命令通过复制主数据库中的内容到一个临时数据库文件,然后清空主数据库,并从副本中重新载入原始的数据库文件。这消除了空闲页,把表中的数据排列为连续的,另外会清理数据库文件结构。
如果表中没有明确的整型主键(INTEGER PRIMARY KEY),VACUUM 命令可能会改变表中条目的行 ID(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 则是反碎片化。所以 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;"
在本章中,我们将学习如何创建表。 在创建表之前,首先确定其名称,字段名称和字段定义。 以下是表创建的一般语法: CREATE TABL...
Redis DEL 命令Redis key(键) Redis DEL 命令用于删除已存在的键。不存在的 key 会被忽略。语法 redis DEL 命令基本语法如下:re...
Redis Sismember 命令Redis 集合(Set)Redis Sismember 命令判断成员元素是否是集合的成员。语法 redis Sismember 命令基本语法如...
Redis Zcount 命令 Redis 有序集合(sorted set) Redis Zcount 命令用于计算有序集合中指定分数区间的成员数量。语法 redis Zcoun...
Redis Zrangebylex 命令 Redis 有序集合(sorted set) Redis Zrangebylex 通过字典区间返回有序集合的成员。语法 redis Zrange 命...
Redis Zscore 命令 Redis 有序集合(sorted set) Redis Zscore 命令返回有序集中,成员的分数值。如果成员元素不是有序集 key 的...
Redis Exec 命令 Redis 事务 Redis Exec 命令用于执行所有事务块内的命令。语法 redis Exec 命令基本语法如下:redis 127.0.0.1:...
Redis Role 命令 Redis 服务器 Redis Role 命令查看主从实例所属的角色,角色有master, slave, sentinel。语法 redis Role 命令...
Redis Info 命令 Redis 服务器 Redis Info 命令以一种易于理解和阅读的格式,返回关于 Redis 服务器的各种信息和统计数值。通过...