SQLite Vacuum 学习笔记

简介

SQLite是一个流行的嵌入式关系型数据库,它可以在各种平台上运行。缩小SQLite数据库(即减小SQLite数据库文件的大小)是一个常见的需求,这可以通过执行sqlite3_vacuum操作来实现。

SQLite Vacuum 操作的基本语法

SQLite Vacuum操作的基本语法如下所示:

Copy Code
VACUUM;

此命令将从当前连接的数据库中删除所有未使用的数据,并将使用的数据重新组织以最大限度地减少文件的大小。

SQLite Vacuum 操作的实例

以下示例演示如何在SQLite中使用vacuum操作:

  1. 首先,我们将创建一个名为test.db的数据库:
sqlCopy Code
sqlite3 test.db CREATE TABLE example_table ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, age INTEGER NOT NULL ); INSERT INTO example_table (id, name, age) VALUES (1, 'Alice', 25); INSERT INTO example_table (id, name, age) VALUES (2, 'Bob', 30);
  1. 接下来,我们将执行一些更新query,然后查看文件大小:
sqlCopy Code
UPDATE example_table SET age=26 WHERE id=1; UPDATE example_table SET age=31 WHERE id=2; SELECT * FROM example_table; SELECT page_count * page_size / 1024.0 / 1024.0 AS size_mb FROM pragma_page_count(), pragma_page_size();
  1. 输出结果如下:
sqlCopy Code
1|Alice|26 2|Bob|31 size_mb ---------- 1.0
  1. 现在,我们将执行Vacuum操作并再次查看文件大小:
sqlCopy Code
VACUUM; SELECT page_count * page_size / 1024.0 / 1024.0 AS size_mb FROM pragma_page_count(), pragma_page_size();
  1. 输出结果如下:
sqlCopy Code
size_mb ---------- 0.5

总结

通过执行vacuum操作,我们成功地从当前连接的SQLite数据库中删除了所有未使用的数据,并重新组织了使用的数据以最大限度地减少文件的大小,从而使数据库文件变小。