Auto_Vacuum Process SQLite

В этом учебном пособии вы узнаете, как использовать процесс auto_vacuum с синтаксисом и примерами.

Описание

Представленный в SQLite 3.1, auto_vacuum - это дополнительная функция, которая автоматически удаляет лишнее «пустое» пространство базы данных, чтобы минимизировать размер файла базы данных. С помощью этой функции вам не нужно вручную запускать оператор VACUUM. По умолчанию функция auto_vacuum отключена.

Подсказка: Хотя функция auto_vacuum уменьшит размер файла базы данных за счет освобождения неиспользуемого пространства, она не выполняет никакой дефрагментации. Это означает, что таблицы и индексы в файле не могут храниться непрерывно. Если вы хотите дефрагментировать файл базы данных, вам все равно нужно будет выполнить оператор VACUUM.

ТЕКУЩИЕ НАСТРОЙКИ

Чтобы просмотреть текущий режим для процесса auto-vacuum, вы можете запустить следующую оператор PRAGMA:

Этот оператор вернет режим для процесса auto-vacuum. См. Таблицу ниже для объяснения различных режимов.

Обновить настройки

Синтаксис для изменения режима для процесса auto_vacuum в SQLite:

Параметры или аргументы

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, чтобы она автоматически уменьшала размер файла базы данных.

Например:

В этом примере будет включен процесс auto_vacuum, и вся очистка будет выполняться автоматически.

Enable Incremental

Вы также можете включить инкрементный auto_vacuum в SQLite, чтобы подготовить файл базы данных, но освободившиеся страницы необходимо вручную удалить из файла базы данных с помощью дополнительного оператора PRAGMA.

Например:

В этом примере будет включена функция auto_vacuum, но вам нужно будет выполнить инструкцию PRAGMA incremental_vacuum, чтобы уменьшить размер файла базы данных.

Синтаксис для PRAGMA incremental_vacuum в SQLite:

PRAGMA [database.]incremental_vacuum(N);

Где N - максимальное количество страниц, которые можно удалить из списка освободившихся.

Например:

Этот оператор PRAGMA удалит до 5 освободившихся страниц из файла базы данных.

Disable

Чтобы отключить функцию auto_vacuum в SQLite, вы можете запустить следующую инструкцию PRAGMA:

В этом примере функция auto_vacuum будет отключена.