安卓数据存储问题

6

我有一个应用程序,它将数据存储在SQLite数据库中。当应用程序刚安装时,它使用8kb的数据,当我开始插入数据时,显然大小会增加。奇怪的是,当我开始清理我的数据库表时,我完全清空了数据库,但我永远无法恢复前8kb的数据,而是会增加更多的数据量,在某些情况下甚至超过100kb,这些数据是从哪里来的?

1个回答

11

数据库并不像文件系统,因此当你从数据库中删除数据时,并不能恢复之前使用的空间。数据库驱动程序通常会选择保留旧的分配空间。

你可以通过手动执行SQLite的VACUUM命令来压缩数据库,从而恢复这些空间。

在创建数据库之前可能可以启用auto_vacuum模式。


2
只需在大量删除后调用db.execSQL("VACUUM"),我就能看到差异。谢谢! - user748492
真空加速是否也能提高数据访问速度? - gipinani
@mserioli 它只是通过重建数据库来进行碎片整理。我没有找到说明它可以加快访问数据速度的文档... - IgorGanapolsky
它将间接加快访问速度,想象一下你能更快地在杂乱的房子里找到玩具还是整洁的房子? - M. Erfan Mowlaei

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接