在“DELETE FROM table”之后更改sqlite文件大小

我正在与sqlite3文件。

首先,我input了比较大的数据库,文件大小约为100 MB。

比我做的

$db->exec("DELETE FROM table"); 

并进入该数据库的一小部分。 但文件大小保持100 MB。

你应该怎么做,以删除它的内容时更改sqlite文件的大小?

你正在寻找的命令是真空 。 还有一个翻译自动吸尘的杂注。

从文档:

从数据库中删除对象(表,索引,触发器或视图)时,会留下空的空间。 下一次将新的信息添加到数据库时,这个空的空间将被重新使用。 但同时,数据库文件可能比严格必要的大。 此外,频繁的插入,更新和删除操作可能会导致数据库中的信息变得碎片化 – 在整个数据库文件中都会出现碎片,而不是集中在一起。

VACUUM命令通过将其内容复制到临时数据库文件并从副本重新加载原始数据库文件来清除主数据库。 这消除了空闲页面,使表格数据连续,否则清理数据库文件结构。

你可以这样做

 $db->exec("vacuum"); 

 $db->exec("DELETE FROM table"); 

和文件大小将被改变。

清理数据库SQLite有两个为清理重build索引和真空而devise的命令。 reindex用于重build索引。 它有两种forms:reindex collat​​ion_name; reindex table_name | index_name;