PostgreSQL AUTOVACUUM Daemon

В этом учебном пособии по PostgreSQL более подробно рассказывается о демоне AUTOVACUUM.

Описание

Представленный в PostgreSQL 8.1 демон AUTOVACUUM — это дополнительная функция, которая автоматически пылесосит базу данных, поэтому вам не нужно вручную запускать оператор VACUUM. Демон AUTOVACUUM включен в конфигурации по умолчанию.
Демон AUTOVACUUM состоит из нескольких процессов, которые восстанавливают хранилище, удаляя устаревшие данные или кортежи из базы данных. Он проверяет таблицы, в которых имеется значительное количество вставленных, обновленных или удаленных записей, и пылесосит эти таблицы на основе приведенных ниже параметров конфигурации.

Настройки по умолчанию

Настройки AUTOVACUUM для PostgreSQL можно найти в файле postgresql.conf и контролировать, когда и как работает демон. Ниже приведен пример этих настроек:

Текущие настройки

Вы можете просмотреть настройки AUTOVACUUM одним из двух способов. Вы можете открыть файл postgresql.conf и просмотреть параметры AUTOVACUUM (как описано выше). Или, если вы вошли в базу данных, вы можете выполнить следующий запрос:

Этот запрос вернет текущие системные настройки для демона AUTOVACUUM, но важно отметить, что вы не можете обновить эти настройки с помощью запроса.

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

Чтобы изменить настройки для демона AUTOVACUUM, вам необходимо найти и отредактировать настройки, хранящиеся в файле postgresql.conf. Расположение файла postgresql.conf зависит от используемой системы.
После того как вы отредактировали настройки в файле postgresql.conf, вам потребуется перезапустить базу данных, чтобы изменения вступили в силу.

Отключить AUTOVACUUM для таблицы

Когда системные настройки для AUTOVACUUM включены, вы можете отключить AUTOVACUUM для определенной таблицы, если выберете. Это делается путем запуска запроса в базе данных.
Синтаксис для отключения AUTOVACUUM для таблицы в PostgreSQL:

table_name
Таблица, к которой вы не хотите применить autovacuum.

Например:

В этом примере демон AUTOVACUUM будет переопределен, чтобы таблица products не очищалась автоматически.
Если вы не уверены, была ли отключена функция AUTOVACUUM в таблице, вы можете выполнить следующий запрос:

Это вернет параметр AUTOVACUUM для таблицы products. Если AUTOVACUUM был отключен, ваш запрос будет возвращать что-то вроде этого:

В этом примере для таблицы products для autovacuum_enabled установлено значение false. Это означает, что демон AUTOVACUUM не будет пытаться очистить таблицу products.