Команда VACUUM очищает основную базу данных путем копирования ее содержимого во временный файл базы данных и перезагрузки исходного файла базы данных из копии. Это устраняет свободные страницы, выравнивает данные таблицы, чтобы они были смежными, и в противном случае очищает структуру файла базы данных.
Команда VACUUM может изменить ROWID записей в таблицах, которые не имеют явного INTEGER PRIMARY KEY. Команда VACUUM работает только в основной базе данных. Невозможно VACUUM прикрепленный файл базы данных.
Команда VACUUM не будет выполнена, если есть активная транзакция. Команда VACUUM не предназначена для баз данных в памяти. Поскольку команда VACUUM восстанавливает файл базы данных с нуля, VACUUM также можно использовать для изменения многих параметров конфигурации, специфичных для базы данных.
Ручной ВАКУУМ
Ниже приведен простой синтаксис для выдачи команды VACUUM для всей базы данных из командной строки:
$sqlite3 database_name "VACUUM;"
Вы можете запустить VACUUM из командной строки SQLite, а также:
sqlite> VACUUM;
Вы также можете запустить VACUUM для определенной таблицы следующим образом:
sqlite> VACUUM table_name;
Авто-VACCUM
SQLite Auto-VACUUM не делает то же самое, что VACUUM, а лишь перемещает свободные страницы в конец базы данных, тем самым уменьшая размер базы данных. Таким образом он может существенно фрагментировать базу данных, а VACUUM обеспечивает дефрагментацию. Следовательно, Auto-VACUUM просто сохраняет базу данных маленькой.
Вы можете включить / отключить автоочистку SQLite с помощью следующих прагм, запущенных в командной строке SQLite:
sqlite> PRAGMA auto_vacuum = NONE; -- 0 means disable auto vacuum sqlite> PRAGMA auto_vacuum = FULL; -- 1 means enable full auto vacuum sqlite> PRAGMA auto_vacuum = INCREMENTAL; -- 2 means enable incremental vacuum
Вы можете выполнить следующую команду из командной строки, чтобы проверить настройку автоматического вакуума —