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