Учебники

SQLite — ВАКУУМ

Команда 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

Вы можете выполнить следующую команду из командной строки, чтобы проверить настройку автоматического вакуума —