У меня есть база данных SQLite, которую мое приложение использует для хранения некоторых данных.Он может быть очень большим (размером в несколько ГБ), он имеет только 3 столбца: счетчик с автоинкрементом, UUID и двоичный BLOB.Мое приложение отслеживает, сколько строк находится в базе данных, и удаляет самые старые (на основе приращения), когда оно превысило предел строки.
При запуске я также запускаю VACUUM
, чтобы сжать базу данных весли предел строки изменился, а пространство в базе данных - это в основном свободное место.
Насколько я понимаю, команда DELETE
просто пометит удаленные страницы как "свободные страницы", которые можно перезаписать заново.,Несмотря на это, я вижу, что размер файла продолжает расти (хотя и медленнее) при вставке новых строк после того, как достигнут предел строк.Это из-за фрагментации свободных страниц?Могу ли я ожидать, что этот фрагментарный рост прекратится после того, как прошло достаточно много времени?Мое приложение предназначено для непрерывной работы в течение очень долгого времени, и если размер файла увеличивается на каждом INSERT
, жесткий диск машины будет заполняться.