Мы используем Sqlite3 в качестве встроенной базы данных для проекта на основе C ++. Процесс, использующий интерфейс sqlite3 (тот, который фактически фиксирует записи журнала), по-видимому, расширяет свою кучную память при увеличении размера базы данных.
Расширение динамической памяти определенно напрямую связано с размером базы данных (доказательство: если строка «вставка в базу данных» закомментирована, расширение никогда не произойдет, И если включение журнала включено, когда база данных начинает перенос расширение прекращается, как будто оно исчерпано).
Мы на Unix-подобной ОС.
Кто-нибудь знает, если SQLITE3 выполняет какое-то кэширование, которое мы могли бы отключить, если UNIX может делать это само, или это обязательно проблема? Беспокойство здесь очевидно, что куча памяти может быть исчерпана, что приведет к сбою нашей системы.
Я видел странную ссылку на само кеширование в UNIX и высвобождение связанной с кешем памяти, когда это требуется в противном случае, но я недостаточно знаю об этом предмете, чтобы быть уверенным в том, что это правда. Я не нашел ничего подходящего (что я понимаю) в документации SQLITE3.