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.Также можно передать строку подключения. В этом случае параметры строки подключения имеют приоритет над одноименными параметрами командной строки. Кроме того, параметры строки подключения, отличные от самого имени базы данных, будут повторно использованы при подключении к другим базам данных.
Переменные окружения#
Утилита поддерживает переменные окружения:
PGDATABASEPGHOSTPGPORTPGUSERPG_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