Una vez que terminé de almacenar todos mis datos en sqlite, ya alcanza los 14 MB. Es por eso que me temo que algunas personas no pueden descargar mi aplicación desde el área de conexión lenta. ¿Hay alguna forma de reducir la base de datos sqlite?
Lame caliente
Has probado VACÍO?
El comando VACUUM reconstruye toda la base de datos. Hay varias razones por las que una aplicación podría hacer esto:
- A menos que SQLite se esté ejecutando en modo “auto_vacuum=FULL”, cuando se elimina una gran cantidad de datos del archivo de la base de datos, deja un espacio vacío o páginas de base de datos “libres”. Esto significa que el archivo de la base de datos puede ser más grande de lo estrictamente necesario. Ejecutar VACUUM para reconstruir la base de datos recupera este espacio y reduce el tamaño del archivo de la base de datos.
- Las inserciones, actualizaciones y eliminaciones frecuentes pueden hacer que el archivo de la base de datos se fragmente, donde los datos de una sola tabla o índice se dispersan por el archivo de la base de datos. La ejecución de VACUUM garantiza que cada tabla e índice se almacene en gran medida de forma contigua dentro del archivo de la base de datos. En algunos casos, VACUUM también puede reducir la cantidad de páginas parcialmente llenas en la base de datos, lo que reduce aún más el tamaño del archivo de la base de datos…
El comando VACUUM funciona copiando el contenido de la base de datos en un archivo de base de datos temporal y luego sobrescribiendo el original con el contenido del archivo temporal. Al sobrescribir el original, un diario de reversión o registro de escritura anticipada El archivo WAL se usa como lo haría con cualquier otra transacción de la base de datos. Esto significa que al VACÍAR una base de datos, se requiere hasta el doble del tamaño del archivo de la base de datos original en espacio libre en disco…
-
ejecuta esto:
sqlite3 /path/to/your/db/foo.db 'VACUUM;'
– Toño Nam
30 de julio de 2019 a las 8:43
-
Tu puedes correr
VACUUM;
directamente en la ventana de consulta– SoyGroot
6 de enero de 2021 a las 8:10
algunos consejos:
-
SQLite es algo perezoso para recuperar el espacio no utilizado; utilizar el VACÍO comando o modo de vacío automático.
-
el formato de la base de datos cambia la eficiencia del espacio por un acceso rápido. si simplemente volca el contenido de los datos, ya sea como un volcado de SQL o simplemente como un archivo CVS para cada tabla de la base de datos, es probable que obtenga archivos más pequeños.
-
ya sea utilizando archivos de base de datos o datos simples, intente comprimirlos.
Poner el comentario de @Tono Nam en una respuesta. Un ejemplo con sintaxis completa siempre es muy útil.
Ejecute lo siguiente en la línea de comando para usar el vacuum
dominio:
sqlite3 /path/to/your/db/foo.db 'VACUUM;'
14 mb es muy grande para una aplicación de Android; es mejor si puede hacer arreglos para que se descargue de un servidor y se integre en la aplicación.
En su lugar, puede empaquetar la aplicación con el archivo de la base de datos comprimido (es decir, un archivo .zip) y descomprimirlo cuando se ejecuta la aplicación por primera vez (recordando eliminar el archivo .zip). Lo mejor es hacer todo esto en una tarjeta SD.
Intente comprimirlo y use zipinput stream mientras desempaqueta su base de datos de los activos. De todos modos, Android comprimirá su base de datos de 14 mb cuando cree su apk de todos modos (que se descomprimirá durante la instalación), así que supongo que su apk tendrá un tamaño de alrededor de 5-6 mb.
-
¿Android se comprimirá automáticamente al crear/exportar un archivo apk?
– PP Shein
7 de octubre de 2011 a las 7:23
-
ya lo hace mi aplicación tenía una base de datos de 12 mb en activos. Al crear un apk, el tamaño del archivo apj=k era de solo 4 mb. Creo que incluso puedo reducirlo aún más si uso archivos zip dentro de los activos.
– rDroid
11 de octubre de 2011 a las 4:22
-
como PPShein mencionó, Android comprimirá la base de datos, pero puede usar 7zip. luego, por esta biblioteca, descomprímalo: github.com/hzy3774/AndroidUn7zip
–Hadi Ahmadi
28 de noviembre de 2019 a las 11:49
Tuve una experiencia con sqlite donde importé alrededor de 3 MB de datos, después de lo cual me di cuenta de que los datos tenían problemas de codificación. Dejé caer la tabla, la rehice y volví a importar los datos después de solucionar los problemas de codificación. Resultado: un archivo sqlite de 6mb. Mi solución fue eliminar el sqlite db y simplemente crear uno nuevo. (Sin más detalles sobre lo que está almacenando en su base de datos, esto es todo lo que puedo ofrecer…)
-
¿Android se comprimirá automáticamente al crear/exportar un archivo apk?
– PP Shein
7 de octubre de 2011 a las 7:23
-
ya lo hace mi aplicación tenía una base de datos de 12 mb en activos. Al crear un apk, el tamaño del archivo apj=k era de solo 4 mb. Creo que incluso puedo reducirlo aún más si uso archivos zip dentro de los activos.
– rDroid
11 de octubre de 2011 a las 4:22
-
como PPShein mencionó, Android comprimirá la base de datos, pero puede usar 7zip. luego, por esta biblioteca, descomprímalo: github.com/hzy3774/AndroidUn7zip
–Hadi Ahmadi
28 de noviembre de 2019 a las 11:49
vive el amor
14 MB no es tan grande para una aplicación hoy en día. Otra cosa que puede intentar es eliminar los índices de tablas innecesarios. Algunos índices pueden estar al acecho en sus tablas y pueden ocupar mucho espacio. Es posible que tenga que hacer sus consultas de manera diferente.
-
O puede reconstruirlos en el primer inicio de la aplicación.
– xryl669
2 de abril de 2015 a las 10:09