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