2 votes

Comment utiliser VACUUM de sqlite dans android

J'ai une application Android qui implique de se connecter à l'application et d'effectuer de nombreuses opérations CRUD. Lorsque l'utilisateur se connecte pour la première fois, il se connecte rapidement s'il existe des données disponibles pour cet utilisateur qui seront téléchargées. Mais plus tard, lors de la reconnexion, le processus est très lent, parfois cela prend environ 20 à 30 minutes. Ainsi, j'ai lu qu'il fallait utiliser VACUUM pour éviter l'espace libre créé lorsque l'enregistrement est supprimé.

Je suis un peu confus quant à quand et comment utiliser VACUUM, est-ce lors de l'ouverture de la base de données lorsque l'utilisateur se connecte ? ou à un autre moment.

Toute suggestion à ce sujet serait utile. Merci

5voto

forpas Points 116974

De : https://sqlite.org/lang_vacuum.html

Exécuter VACUUM assure que chaque table et index est en grande partie stocké de manière contiguë
dans le fichier de la base de données

À propos de nombreuses opérations CRUD : le fichier de la base de données devient généralement fragmenté,
surtout lorsque ces opérations impliquent par exemple la suppression d'une grande quantité de données.
Avec du code Java, c'est assez simple :

db.execSQL("VACUUM");

bien que le processus puisse prendre un certain temps et qu'il n'est pas possible de surveiller son progrès.
Bien sûr vous n'avez pas besoin d'exécuter cette instruction à chaque fois que vous lancez l'application, mais périodiquement.
Ou vous pouvez laisser l'utilisateur exécuter ce processus, s'il rencontre des retards lors du chargement des données, voire de la connexion, après avoir clairement indiqué qu'une telle opération, tout comme toute opération de reconstruction, n'est pas totalement sécurisée, donc proposez d'abord une sauvegarde.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X