English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной учебник SQLite

Дополнительный учебник SQLite

Интерфейс программы SQLite

Vacuum в SQLite

Команда VACUUM копирует содержимое основной базы данных в временный файл базы данных, затем очищает основную базу данных и перезагружает исходный файл базы данных из копии. Это удаляет свободные страницы, упорядочивает данные в таблице в непрерывном порядке, а также очищает структуру файла базы данных.

Если в таблице нет ясного целого типа главного ключа (INTEGER PRIMARY KEY), команда VACUUM может изменить идентификатор строки (ROWID) записи в таблице. Команда 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 является дефрагментацией. Поэтому автоматический VACUUM делает базу данных только меньше.

В SQLite-диспутере вы можете использовать следующее для компиляции и выполнения, включения/отключения автоматического VACUUM SQLite:

sqlite> PRAGMA auto_vacuum = NONE; -- 0 означает отключение автоматического вакуума
sqlite> PRAGMA auto_vacuum = FULL; -- 1 означает включение полного автоматического вакуума
sqlite> PRAGMA auto_vacuum = INCREMENTAL; -- 2 означает включение инкрементного vacuum

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

$sqlite3 database_name "PRAGMA auto_vacuum;"