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;"