2017-01-13 6 views
1

Мы создаем приложение linux для сбора данных с датчиками для небольшого устройства ARM, данные хранятся в базе данных SQLite на SD-карте. Из-за ограниченных ресурсов я хочу периодически проверять (физический) размер БД и периодически отбрасывать старые данные.Запросить размер файла базы данных SQLite?

Я мог бы использовать функции C++ или ОС, чтобы получить размер файла, но я думаю, что это было бы более элегантно и портативно, если бы я мог получить размер файла непосредственно из БД, запросив его. Есть ли способ сделать это?

ответ

0

Удаление данных не уменьшает размер файла (свободные страницы просто остаются в файле базы данных и могут использоваться повторно для новых данных).

Уменьшение размера файла базы данных выполняется путем выполнения VACUUM, но на самом деле требуется в три раза больше размера файла для копирования по файлу.

Механизм запроса размера файла отсутствует. вы должны использовать некоторую функцию ОС. Но чтобы узнать, сколько свободных страниц есть, используйте PRAGMA freelist_count.

Чтобы предотвратить слишком большую базу данных, используйте PRAGMA max_page_count (и будьте готовы обработать возникающие ошибки).

Смежные вопросы