Разъяснение относительно journal_size_limit в SQLite
Если я установлю journal_size_limit = 67110000
(64 МиБ) я смогу:
- работать с / совершать транзакции над этим значением (несколько маловероятно)
- быть в состоянии успешно выполнить
VACUUM
(даже если база данных имеет значение 3 ГиБ или более)
Команда VACUUM работает, копируя содержимое базы данных во временный файл базы данных, а затем перезаписывая оригинал содержимым временного файла. При перезаписи оригинала используется журнал отката или файл WAL с опережением записи, как и для любой другой транзакции базы данных. Это означает, что при VACUUMing базе данных в свободном дисковом пространстве требуется вдвое больше исходного файла базы данных.
Это не совсем ясно в документации, и я был бы признателен, если бы кто-то мог сказать мне наверняка.
1 ответ
journal_size_limit
не является верхним пределом в журнале транзакций; это верхний предел для неактивного журнала транзакций.
После завершения транзакции журнал не нужен, но не удаление журнала может ускорить процесс, поскольку файловой системе не нужно освобождать эти данные и затем перераспределять их для следующей транзакции.
Целью этого параметра является ограничение размера неиспользуемых данных журнала.