Проблема с хранилищем данных Android

#android #sqlite

#Android #sqlite

Вопрос:

У меня есть приложение, которое хранит данные в базе данных SQLite, когда приложение только установлено, оно использует 8 КБ данных, и когда я начинаю вставлять данные, очевидно, что размер увеличивается. Странно то, что когда я начинаю очищать таблицы своей базы данных, я полностью очищаю базу данных, но я никогда не восстановлю первые 8 КБ данных, но гораздо больше, в некоторых случаях более 100 КБ, откуда берутся эти данные?

Ответ №1:

База данных не похожа на файловую систему, поэтому при удалении данных из базы данных вы не восстанавливаете пространство, которое использовали ранее. Драйвер базы данных, как правило, предпочитает сохранять старое выделенное пространство.

Вы можете сжать свою базу данных, которая восстановит это пространство, вручную выполнив команду SQLite VACUUM.

Возможно, удастся включить режим авто_вакуума, но это необходимо сделать до создания базы данных.

Комментарии:

1. Просто вызывая db.ExecSQL («VACUUM») после большого удаления, я вижу разницу. Спасибо!

2. Ускоряет ли vacuum доступ к данным?

3. @mserioli Он просто дефрагментирует базу данных, перестраивая ее. Я не нашел документации, в которой говорится, что это ускоряет доступ к данным…

4. Это косвенно ускорит доступ, представьте, что вы можете быстрее найти свою игрушку в грязном доме или чистую?