SQLite: на диске против базы данных памяти - PullRequest
1 голос
/ 08 ноября 2010

Мы пытаемся интегрировать SQLite в наше приложение и пытаемся заполнить его как кэш. Мы планируем использовать его как базу данных в памяти. Используя это в первый раз. Наше приложение основано на C ++.

Наше приложение взаимодействует с основной базой данных для извлечения данных и выполняет многочисленные операции. Эти операции, как правило, касаются одной таблицы, которая имеет довольно большой размер. Мы скопировали эту таблицу в SQLite, и следующие замечания:

Количество полей: 60 Количество записей: 1 000 000

Когда начинается заполнение данными, объем памяти приложения резко возрастает до ~ 1,4 ГБ с 120 МБ. В настоящее время наше приложение находится в состоянии ожидания и не выполняет каких-либо серьезных операций. Но, как правило, после запуска операций запускается использование памяти. Теперь с SQLite, как в Memory DB, и с таким высоким использованием памяти, мы не думаем, что сможем поддерживать эти многочисленные записи.

Когда я создаю БД на диске, размер БД составляет ~ 40 МБ. Но тем не менее использование памяти приложением остается очень высоким.

Q. Есть ли причина для такого высокого использования. Все буферы были очищены и, как было сказано ранее, БД не находится в памяти?

Любая помощь будет принята с благодарностью.

Спасибо и С уважением Сэчин

Ответы [ 2 ]

2 голосов
/ 16 июня 2012

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

Если вы выполняете много операций обновления вставки, размер базы данных может увеличиться.Вы можете использовать команду Vacum, чтобы освободить место.

1 голос
/ 08 ноября 2010

SQLite использует память для других вещей, кроме самих данных. Он содержит не только данные, но также соединения, подготовленные операторы, кэш запросов, результаты запросов и т. Д. Вы можете прочитать больше о Распределение памяти SQLite и настроить его. Убедитесь, что вы правильно уничтожаете свои объекты (sqlite3_finalize () и т. Д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...