2011-05-11 9 views
6

Tengo una aplicación que almacena datos en una base de datos SQLite, cuando la aplicación acaba de instalar utiliza 8kb de datos y cuando empiezo a insertar datos, obviamente el tamaño aumenta. Lo extraño es que cuando empiezo a limpiar las tablas de mi base de datos, vacío completamente la base de datos, pero nunca recuperaré los primeros 8kb de datos, pero mucho más, en algunos casos, más de 100 kb, ¿de dónde provienen estos datos?Problema de almacenamiento de datos de Android

Respuesta

11

Una base de datos no es como un sistema de archivos, por lo que cuando elimina datos de una base de datos, no recupera el espacio que utilizó anteriormente. El controlador de la base de datos tenderá a preferir mantener el espacio asignado anterior.

Puede compactar su base de datos, que recuperará este espacio ejecutando manualmente el comando SQLite VACUUM.

Es posible habilitar el modo auto_vacuum, pero esto debe hacerse antes de la creación de la base de datos.

+2

Simplemente llamando a db.execSQL ("VACUUM") después de una gran eliminación, puedo ver la diferencia. ¡Gracias! – user748492

+0

¿El vacío acelera también el acceso a los datos? – gipinani

+0

@mserioli Simplemente desfragmenta el DB reconstruyéndolo. No he encontrado documentación que indique que acelera el acceso a los datos ... –

Cuestiones relacionadas