0 votos

¿Cómo optimizar la base de datos sqlite3 de Android?

Escribí un bash script para optimizar (aspirar + reindexar) las bases de datos sqlite3 de Android para mejorar el rendimiento.

Ayudará a reducir el uso de la CPU, el uso de la batería y el tiempo de carga de las aplicaciones, etc. Se recomienda optimizar una vez cada dos meses.

Normalmente, no causará ninguna pérdida de datos, sin embargo, recomiendo mantener una copia de seguridad y funcionar con el cargador enchufado (para evitar el sueño del dispositivo y el agotamiento de la batería)

Normalmente se tarda unos 10 minutos en terminar la optimización, sin embargo, depende del tamaño de la base de datos y del rendimiento del hardware.

0voto

PlanZ Puntos 1
#!/system/bin/sh

## Author : Seff P.
## Version: 20171129
## Run as ROOT (su) user

# Download the sqlite3 binary for your CPU arch and place at /system/xbin/sqlite3 (Set exec. perm.)
SQLITE3=/system/xbin/sqlite3

RES_PATH="/sdcard"
echo -n "Database last optimized: "
cat $RES_PATH/last_db_optimized_date 2> /dev/null || echo UNKNOWN

echo
PRESIZE=0
POSTSIZE=0

# Turn-off Wifi and Mobile Data to reduce DB operations during optimization
svc data disable 
svc wifi disable

# Database optimize
for DB in \
`busybox find /data/data/*/databases -type f ! -name "*-*"`;
do \
  CURSIZE=$(du $DB | awk {'print $1'})
  PRESIZE=$(( $PRESIZE + $CURSIZE ))
  echo -ne "\e[39m$DB" | sed 's/\/data\/data\///g' | sed 's/\/databases\//\//g'
  $SQLITE3 $DB 'REINDEX;' &> /dev/null && $SQLITE3 $DB 'VACUUM;' && echo -e "\e[32m [DONE]" || echo -e "\e[31m [FAIL]"
  CURSIZE=$(du $DB | awk {'print $1'})
  POSTSIZE=$(( $POSTSIZE + $CURSIZE ))
done;
echo -e "\e[39m"

date > $RES_PATH/last_db_optimized_date
echo "Total DB size before: $PRESIZE KB"
echo "Total DB size after : $POSTSIZE KB"

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X