Нет причины, по которой база данных, использующая SQLCipher, была бы такой большой по сравнению с базой данных без SQLCipher.Каждая страница базы данных SQLCipher использует только 48 байтов страницы для IV и HMAC.Таким образом, при размере страницы 1024 байта, если у вас была незашифрованная база данных 7 МБ, зашифрованная версия SQLCipher должна быть только 7,34 МБ.
Более вероятным объяснением является то, что ваша база данных выросла в результате удалений и вставок.Если автоматический вакуум не включен в базе данных, удаленные строки могут продолжать занимать место.Попробуйте запустить VACUUM в базе данных, чтобы освободить место.
Если очистка базы данных не решает проблему, вот несколько дополнительных вопросов;
- Вы уверены, что индексы FTS3 не просто отвечают за размер файла?
- Вы пытались создать такую же точную схему и структуру таблицы с FTS3 в незашифрованной базе данных, чтобы сравнить размеры файлов, чтобы сделатьуверены, что это на самом деле проблема с SQLCipher?Является ли незашифрованная база данных с FTS3 7 МБ?
- Если ответы на вопросы 1 и 2 - да, можете ли вы указать точные шаги для перехода от незашифрованной к зашифрованной базе данных?
Чтобы ответить на ваш общий вопрос, база данных SQLCipher, вероятно, не будет хорошо сжиматься.Если увеличение размера файла на самом деле является результатом FTS3, а не SQLCipher, то вы можете рассмотреть возможность отправки данных в приложение, а затем создать виртуальную таблицу FTS3 на устройстве.