Перейти к основному содержимому

vacuumdb

примечание

Эта страница переведена при помощи нейросети GigaChat.

vacuumdb — выполняет очистку и анализ базы данных PostgreSQL.

Синтаксис

vacuumdb [connection-option...] [option...] [ -t | --table table [( column [,...] )] ] ... [ dbname | -a | --all ]

vacuumdb [connection-option...] [option...] [ -n | --schema schema ] ... [ dbname | -a | --all ]

vacuumdb [connection-option...] [option...] [ -N | --exclude-schema schema ] ... [ dbname | -a | --all ]

Описание

vacuumdb — утилита для очистки базы данных PostgreSQL. vacuumdb также генерирует внутреннюю статистику, которую использует оптимизатор запросов PostgreSQL.

vacuumdb является оболочкой для команды SQL VACUUM. По своей эффективности она не отличается от очистки базы данных другими способами, доступными в сервере PostgreSQL.

Параметры

Для утилиты vacuumdb существуют следующие параметры командной строки:

-a
--all
Очищает все базы данных.
--buffer-usage-limit size
Задает размер кольцевого буфера стратегии доступа к буферу для данного вызова vacuumdb. Этот размер используется для вычисления количества разделяемых буферов, которые будут повторно использованы в рамках данной стратегии.
-d dbname
--dbname=dbname
Задает имя базы данных для очистки, когда -a/--all не используется. Если параметр не указан, используется переменная окружения PGDATABASE. Если она не установлена, применяется имя пользователя, указанное для подключения. dbname может быть строкой подключения. В этом случае параметры строки подключения имеют приоритет над одноименными параметрами командной строки.
--disable-page-skipping
Отключает пропуск страниц в зависимости от содержимого карты видимости.
-e
--echo
Выводит на экран команды, которые vacuumdb отправляет на сервер.
-f
--full
Выполняет «полную» очистку.
-F
--freeze
Агрессивно «замораживает» версии строк.
--force-index-cleanup
Принудительно удаляет из индексов ссылки на мертвые кортежи.
-j njobs
--jobs=njobs
Выполняет команды VACUUM или ANALYZE в несколько потоков, запуская до njobs параллельных процессов. Это ускоряет обработку, но может повысить нагрузку на сервер.
примечание

Убедитесь, что параметр max_connections имеет достаточно высокое значение, чтобы вместить все соединения.

Использование этого параметра совместно с -f (FULL) может привести к проблемам блокировок при одновременной обработке системных каталогов.

--min-mxid-age mxid_age
Выполняет команды VACUUM или ANALYZE только для тех таблиц, у которых возраст multixact идентификатора превышает указанный порог mxid_age. Используется для выбора таблиц, первоочередная обработка которых поможет предотвратить зацикливание идентификаторов мультитранзакций (подробнее об этом в разделе «Предотвращение сбоев при оборачивании идентификаторов транзакций»)

Возраст определяется как максимум между возрастами основного отношения и его TOAST таблицы (если она существует). TOAST-таблица обрабатывается автоматически, ее указывать отдельно не требуется.

--min-xid-age xid_age
Выполняет команды VACUUM или ANALYZE только для таблиц с возрастом идентификатора транзакции не менее xid_age. Позволяет задать приоритет для предотвращения переполнения идентификаторов транзакций.

Учитывается возраст как основного отношения, так и связанной TOAST-таблицы (если есть). Обе таблицы обрабатываются совместно.

-n schema
--schema=schema
Очищать или анализировать только таблицы в схеме schema. Несколько схем можно очистить, используя несколько переключателей -n.
-N schema
--exclude-schema=schema
Не очищать и не анализировать никакие таблицы в схеме schema. Можно исключить несколько схем, используя несколько переключателей -N.
--no-index-cleanup
Запрещает удаление из индексов ссылок на мертвые кортежи.

--no-process-main Пропустить основную таблицу отношений.

--no-process-toast
Исключает из обработки TOAST-таблицы, связанные с обрабатываемыми таблицами.
--no-truncate
Запрещает отсечение пустых страниц в конце таблиц.
-P parallel_workers
--parallel=parallel_workers
Указывает количество параллельных рабочих процессов для параллельной очистки. Это позволяет в ходе очистки задействовать мощности нескольких процессоров для обработки индексов. Подробнее об этом в описании команды VACUUM.
-q
--quiet
Отключает вывод сообщений о ходе выполнения.
--skip-locked
Пропускает таблицы, которые не удается немедленно заблокировать для обслуживания.
-t table [ (column [,...]) ]
--table=table [ (column [,...]) ]
Выполняет очистку или анализ только указанной таблицы table. Указание столбцов допускается только при использовании с --analyze или --analyze-only. Параметр можно указать несколько раз для очистки нескольких таблиц.
Совет

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

-v
--verbose
Выводит подробную информацию во время процесса.
-V
--version
Выводит версию vacuumdb и завершается.
-z
--analyze
Выполняет расчет статистики, необходимой оптимизатору запросов после очистки.
-Z
--analyze-only
Выполняет только анализ таблиц без их очистки.
--analyze-in-stages
Проводит анализ в несколько этапов (аналогично --analyze-only). Сначала создается минимальная статистика для быстрой начальной оценки (подробнее об этом описано в default_statistics_target), затем выполняются дополнительные проходы для генерации полной статистики.

Полезно при работе с недавно загруженными данными, например после восстановления выгрузки или pg_upgrade. При наличии актуальной статистики в базе запуск этой опции может временно снизить качество выбора планов выполнения.

-?
--help
Показывает справку о параметрах командной строки утилиты vacuumdb и завершается.
-h host
--host=host
Указывает хост компьютера, на котором запущен сервер. Если значение начинается с косой черты, оно определяет каталог Unix-сокета.
-p port
--port=port
Указывает TCP-порт или расширение файла локального Unix-сокета для подключения к серверу.
-U username
--username=username
Указывает имя пользователя для подключения.
-w
--no-password
Отключает запрос на ввод пароля. Если сервер требует аутентификации по паролю и пароль недоступен другими способами, такими как файл .pgpass, попытка подключения завершится неудачей. Параметр полезен в пакетных заданиях и сценариях, где нет пользователя, который мог бы ввести пароль.
-W
--password
Запрашивает пароль перед подключением к основному серверу.

Параметр не является обязательным, поскольку vacuumdb автоматически запросит пароль, если сервер требует аутентификацию паролем. Однако утилита потратит попытку подключения, чтобы выяснить, что сервер хочет пароль. В некоторых случаях стоит ввести -W, чтобы избежать дополнительной попытки подключения.

--maintenance-db=dbname
Указывает имя базы данных, к которой нужно подключиться для определения подлежащих очистке баз данных, когда используется параметр -a /--all. Если параметр не задан, используется база postgres. Если она отсутствует или совпадает с удаляемой, применяется template1.

Также можно передать строку подключения. В этом случае параметры строки подключения имеют приоритет над одноименными параметрами командной строки. Кроме того, параметры строки подключения, отличные от самого имени базы данных, будут повторно использованы при подключении к другим базам данных.

Переменные окружения

Утилита поддерживает переменные окружения:

  • PGDATABASE
  • PGHOST
  • PGPORT
  • PGUSER
  • PG_COLOR

PG_COLOR указывает, использовать ли цвет в диагностических сообщениях. Возможные значения — always, auto и never.

Утилита vacuumdb использует переменные окружения, поддерживаемые libpq.

Диагностика

В случае возникновения трудностей, обратитесь в разделы VACUUM и psql.

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

Примеры

Очистка базы данных test:

$ vacuumdb test

Очистка и анализ для оптимизатора базы данных bigdb:

$ vacuumdb --analyze bigdb

Очистка одной таблицы foo в базе данных xyzzy и анализ только столбца bar таблицы для оптимизатора:

$ vacuumdb --analyze --verbose --table='foo(bar)' xyzzy

Очистка всех таблицы из схем foo и bar в базе данных под названием xyzzy:

$ vacuumdb --schema='foo' --schema='bar' xyzzy

Смотрите также

VACUUM