SQLite - ВАКУУМ
Команда VACUUM очищает основную базу данных, копируя ее содержимое во временный файл базы данных и перезагружая исходный файл базы данных из копии. Это устраняет свободные страницы, выравнивает данные таблицы, чтобы они были смежными, и в противном случае очищает файловую структуру базы данных.
Команда VACUUM может изменить ROWID записей в таблицах, которые не имеют явного INTEGER PRIMARY KEY. Команда VACUUM работает только с основной базой данных. Пылесосить прикрепленный файл базы данных невозможно.
Команда VACUUM завершится ошибкой, если есть активная транзакция. Команда VACUUM не работает с базами данных в памяти. Поскольку команда VACUUM восстанавливает файл базы данных с нуля, VACUUM также может использоваться для изменения многих параметров конфигурации, специфичных для базы данных.
Ручной ВАКУУМ
Ниже приведен простой синтаксис для выполнения команды VACUUM для всей базы данных из командной строки.
$sqlite3 database_name "VACUUM;"
Вы можете запустить VACUUM из командной строки SQLite, а также следующим образом:
sqlite> VACUUM;
Вы также можете запустить VACUUM для конкретной таблицы следующим образом:
sqlite> VACUUM table_name;
Авто-ВАККУМ
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
Вы можете запустить следующую команду из командной строки, чтобы проверить настройку автоматического вакуума:
$sqlite3 database_name "PRAGMA auto_vacuum;"