Подтвердить что ты не робот

Как сжать базу данных sqlite?

После завершения хранения всех моих данных в sqlite он достигнет 14 МБ. Вот почему я боюсь, что некоторые люди не могут загрузить мое приложение из медленной области соединения. Есть ли способ сжать базу данных sqlite?

4b9b3361

Ответ 1

Вы пробовали VACUUM?

Команда VACUUM восстанавливает всю базу данных. Существует несколько причин, по которым приложение может сделать это:

  • Если SQLite не работает в режиме "auto_vacuum = FULL", когда большой объем данных удаляется из файла базы данных, он оставляет пустое пространство или "свободные" страницы базы данных. Это означает, что файл базы данных может быть больше, чем это необходимо. Запуск VACUUM для восстановления базы данных восстанавливает это пространство и уменьшает размер файла базы данных.
  • Частые вставки, обновления и удаления могут привести к фрагментации файла базы данных - где данные для отдельной таблицы или индекса разбросаны по файлу базы данных. Запуск VACUUM гарантирует, что каждая таблица и индекс в значительной степени хранятся в файле базы данных. В некоторых случаях VACUUM может также уменьшить количество частично заполненных страниц в базе данных, уменьшив размер файла базы данных далее...

Команда VACUUM работает, копируя содержимое базы данных во временный файл базы данных и затем перезаписывая оригинал с содержимым временного файла. При перезаписывании оригинала, журнала отката или журнал записи вперед Файл WAL используется так же, как и для любой другой транзакции базы данных. Это означает, что когда VACUUMing базы данных, в два раза больше размера исходного файла базы данных требуется на свободном диске...

Ответ 2

несколько советов:

  • SQLite немного ленив, чтобы вернуть неиспользуемое пространство; используйте команду VACUUM или автоматический вакуумный режим.

  • формат datbase торгует эффективностью пространства для быстрого доступа. если вы просто выгружаете содержимое данных, либо как дамп SQL, либо просто файл CVS для каждой таблицы базы данных, скорее всего, вы получите меньшие файлы.

  • либо используя файлы данных базы данных, либо простые данные, попробуйте сжать их.

Ответ 3

Попробуйте закрепить его и использовать поток zipinput при распаковке базы данных из активов. Во всяком случае, андроид будет заархивировать вашу базу данных 14mb, когда вы все равно создадите свой apk (который будет распакован во время установки), поэтому я думаю, ваш apk будет размером около 5-6 м.

Ответ 4

У меня был опыт работы с sqlite, где я импортировал около 3 МБ данных, после чего я понял, что у данных проблемы с кодировкой. Я удалил таблицу, переделал ее и повторно импортировал данные после исправления проблем с кодировкой. Результат: файл sqlite размером 6 МБ. Моим решением было удалить sqlite db и просто создать новый. (Без дополнительной информации о том, что вы храните в своем db, это все, что я могу предложить...)

Ответ 5

14mb очень велико для Android-приложения, тем лучше, если вы можете организовать его загрузку с сервера и встроенную в приложение.

Вместо этого вы можете связать приложение с сжатым файлом базы данных (т.е..zip файл) и распаковать его, когда приложение будет запущено (помня, что нужно удалить .zip файл). Лучше всего сделать это на SD-карте.

Ответ 6

14 МБ не так уж и много для приложения в настоящее время. Еще одна вещь, которую вы можете попробовать - удалить ненужные индексы таблиц. Некоторые индексы могут скрываться в ваших таблицах, и они могут занимать много места. Возможно, вам придется выполнять свои запросы по-другому.