В этом учебном пособии вы узнаете, как использовать процесс auto_vacuum с синтаксисом и примерами.
Описание
Представленный в SQLite 3.1, auto_vacuum - это дополнительная функция, которая автоматически удаляет лишнее «пустое» пространство базы данных, чтобы минимизировать размер файла базы данных. С помощью этой функции вам не нужно вручную запускать оператор VACUUM. По умолчанию функция auto_vacuum отключена.
Подсказка: Хотя функция auto_vacuum уменьшит размер файла базы данных за счет освобождения неиспользуемого пространства, она не выполняет никакой дефрагментации. Это означает, что таблицы и индексы в файле не могут храниться непрерывно. Если вы хотите дефрагментировать файл базы данных, вам все равно нужно будет выполнить оператор VACUUM.
ТЕКУЩИЕ НАСТРОЙКИ
Чтобы просмотреть текущий режим для процесса auto-vacuum, вы можете запустить следующую оператор PRAGMA:
1 |
PRAGMA [database.]auto_vacuum; |
Этот оператор вернет режим для процесса auto-vacuum. См. Таблицу ниже для объяснения различных режимов.
Обновить настройки
Синтаксис для изменения режима для процесса auto_vacuum в SQLite:
1 |
PRAGMA [database.]auto_vacuum = mode; |
Параметры или аргументы
mode
Определяет, как будет вести себя процесс auto_vacuum. Это может быть одно из следующих значений:
Режим | Пояснение |
---|---|
"0 или NONE (по умолчанию)" |
"Функция auto_vacuum отключена. Это конфигурация по умолчанию в SQLite. В этом режиме вы должны выполнить процесс VACUUM, чтобы уменьшить размер базы данных и выполнить любую дефрагментацию. " |
1 or FULL | "Функция auto_vacuum включена и будет работать автоматически. В этом режиме освободившиеся страницы перемещаются в конец файла и затем обрезаются после каждой фиксации. Это уменьшает размер базы данных, но не дефрагментирует файл базы данных. Чтобы выполнить дефрагментацию файла, вы должны выполнить процесс VACUUM." |
2 or INCREMENTAL | "Функция auto_vacuum включена, но освобождение пространства не выполняется автоматически. В этом режиме размер базы данных не уменьшается до тех пор, пока освободившиеся страницы не будут удалены с помощью инструкции incremental_vacuum PRAGMA. Этот режим не дефрагментирует файл базы данных. Чтобы выполнить дефрагментацию файла, вы должны выполнить процесс VACUUM." |
Примеры
Рассмотрим примеры того, как изменить режим для функции auto_vacuum в SQLite.
Enable Full
Вы можете включить функцию auto_vacuum, чтобы она автоматически уменьшала размер файла базы данных.
Например:
1 |
PRAGMA main.auto_vacuum = 1; |
В этом примере будет включен процесс auto_vacuum, и вся очистка будет выполняться автоматически.
Enable Incremental
Вы также можете включить инкрементный auto_vacuum в SQLite, чтобы подготовить файл базы данных, но освободившиеся страницы необходимо вручную удалить из файла базы данных с помощью дополнительного оператора PRAGMA.
Например:
1 |
PRAGMA main.auto_vacuum = 2; |
В этом примере будет включена функция auto_vacuum, но вам нужно будет выполнить инструкцию PRAGMA incremental_vacuum, чтобы уменьшить размер файла базы данных.
Синтаксис для PRAGMA incremental_vacuum в SQLite:
Где N - максимальное количество страниц, которые можно удалить из списка освободившихся.
Например:
1 |
PRAGMA main.incremental_vacuum(5); |
Этот оператор PRAGMA удалит до 5 освободившихся страниц из файла базы данных.
Disable
Чтобы отключить функцию auto_vacuum в SQLite, вы можете запустить следующую инструкцию PRAGMA:
1 |
PRAGMA main.auto_vacuum = 0; |
В этом примере функция auto_vacuum будет отключена.