vacuumdb
vacuumdb — выполнить очистку и анализ базы данных Postgres Pro
Синтаксис
vacuumdb [параметр-подключения...] [параметр...] [ -t | --table таблица [( столбец [,...] )] ] ... [имя_бд]
vacuumdb [параметр-подключения...] [параметр...] -a | --all
Описание
Утилита vacuumdb предназначена для очистки базы данных Postgres Pro. Кроме того, vacuumdb генерирует внутреннюю статистику, которую использует оптимизатор запросов Postgres Pro.
Утилита vacuumdb представляют собой обёртку SQL-команды VACUUM. Выполнение очистки и анализа баз данных с её помощью по сути не отличается от выполнения тех же действий при обращении к серверу другими способами.
Параметры
Утилита vacuumdb принимает следующие аргументы командной строки:
- -a- --all
- Очистить все базы данных. 
- [-d]- имя_бд- [--dbname=]- имя_бд
- Указывает имя базы данных для очистки или анализа, когда не используется параметр - -a/- --all. Если это указание отсутствует, имя базы определяется переменной окружения- PGDATABASE. Если эта переменная не задана, именем базы будет имя пользователя, указанное для подключения. В аргументе- имя_бдможет задаваться строка подключения. В этом случае параметры в строке подключения переопределяют одноимённые параметры, заданные в командной строке.
- --disable-page-skipping
- Запретить пропуск страниц в зависимости от содержимого карты видимости. - Примечание- Этот параметр доступен только для серверов Postgres Pro версии 9.6 и новее. 
- -e- --echo
- Выводить команды, которые vacuumdb генерирует и передаёт серверу. 
- -f- --full
- Произвести «полную» очистку. 
- -F- --freeze
- Агрессивно «замораживать» версии строк. 
- -j- число_заданий- --jobs=- число_заданий
- Выполнять команды очистки и анализа в параллельном режиме, запуская их одновременно в количестве - число_заданий. Это сокращает время обработки, но увеличивает нагрузку на сервер.- vacuumdb будет устанавливать несколько подключений к базе данных (в количестве - число_заданий), так что убедитесь в том, что значение max_connections достаточно велико, чтобы все эти подключения были приняты.- Заметьте, что использование этого режима с параметром - -f(- FULL) может привести к отказам из-за взаимоблокировок, если параллельно начнут обрабатываться определённые системные каталоги.
- --min-mxid-age- возраст_мультитранзакции
- Выполнять команды очистки и анализа только для таблиц, имеющих не менее чем заданный - возраст_мультитранзакции. Этот параметр полезен для выбора таблиц, первоочередная обработка которых поможет предотвратить зацикливание идентификаторов мультитранзакций (см. Подраздел 23.1.5.1).- Применительно к данному параметру возрастом мультитранзакции для отношения считается наибольший из возрастов основного отношения и связанной с ним таблицы TOAST, если она существует. Так как команды, выполняемые утилитой vacuumdb, будут при необходимости обрабатывать не только отношение, но и таблицу TOAST, связанную с ним, рассматривать их возрасты по отдельности не имеет смысла. - Примечание- Этот параметр доступен только для серверов Postgres Pro версии 9.6 и новее. 
- --min-xid-age- возраст_транзакции
- Выполнять команды очистки и анализа только для таблиц, имеющих не менее чем заданный - возраст_транзакции. Этот параметр полезен для выбора таблиц, обработка которых в первую очередь поможет предотвратить зацикливание идентификаторов транзакций (см. Подраздел 23.1.5).- Применительно к данному параметру возрастом транзакции для отношения считается наибольший из возрастов основного отношения и связанной с ним таблицы TOAST, если она существует. Так как команды, выполняемые утилитой vacuumdb, будут при необходимости обрабатывать не только отношение, но и таблицу TOAST, связанную с ним, рассматривать их возрасты по отдельности не имеет смысла. - Примечание- Этот параметр доступен только для серверов Postgres Pro версии 9.6 и новее. 
- -q- --quiet
- Подавлять вывод сообщений о прогрессе выполнения. 
- --skip-locked
- Пропускать отношения, которые не удаётся немедленно заблокировать для обработки. - Примечание- Этот параметр доступен только для серверов Postgres Pro версии 12 и новее. 
- -t- таблица[ (- столбец[,...]) ]- --table=- таблица[ (- столбец[,...]) ]
- Производить очистку или анализ только указанной - таблицы. Имена столбцов можно указать только в сочетании с параметрами- --analyzeи- --analyze-only. Добавив дополнительные ключи- -t, можно обработать несколько таблиц.- Подсказка- Если вы указываете столбцы, вам, вероятно, придётся экранировать скобки в оболочке. (См. примеры ниже.) 
- -v- --verbose
- Вывести подробную информацию во время процесса. 
- -V- --version
- Сообщить версию vacuumdb и завершиться. 
- -z- --analyze
- Также вычислить статистику для оптимизатора. 
- -Z- --analyze-only
- Только вычислить статистику для оптимизатора (не производить очистку). 
- --analyze-in-stages
- Только вычислить статистику для оптимизатора (без очистки), подобно - --analyze-only. Но для скорейшего получения полезной статистики, выполнить анализ в несколько проходов (в настоящее время, три) с разными параметрами.- Этот параметр полезен при необходимости провести анализ базы данных, только что наполненной данными из архива или командой - pg_upgrade. С этим параметром vacuumdb постарается получить некоторую статистику как можно скорее, чтобы базой можно было пользоваться, а на следующих проходах вычислит полную статистику.
- -?- --help
- Показать справку по аргументам командной строки vacuumdb и завершиться. 
Утилита vacuumdb также принимает следующие аргументы командной строки в качестве параметров подключения:
- -h- сервер- --host=- сервер
- Указывает имя компьютера, на котором работает сервер. Если значение начинается с косой черты, оно определяет каталог Unix-сокета. 
- -p- порт- --port=- порт
- Указывает TCP-порт или расширение файла локального Unix-сокета, через который сервер принимает подключения. 
- -U- имя_пользователя- --username=- имя_пользователя
- Имя пользователя, под которым производится подключение. 
- -w- --no-password
- Не выдавать запрос на ввод пароля. Если сервер требует аутентификацию по паролю и пароль не доступен с помощью других средств, таких как файл - .pgpass, попытка соединения не удастся. Этот параметр может быть полезен в пакетных заданиях и скриптах, где нет пользователя, который вводит пароль.
- -W- --password
- Принудительно запрашивать пароль перед подключением к базе данных. - Это несущественный параметр, так как vacuumdb запрашивает пароль автоматически, если сервер проверяет подлинность по паролю. Однако чтобы понять это, vacuumdb лишний раз подключается к серверу. Поэтому иногда имеет смысл ввести - -W, чтобы исключить эту ненужную попытку подключения.
- --maintenance-db=- имя_бд
- Указывает имя базы данных, к которой будет выполняться подключение для определения подлежащих очистке баз данных, когда используется ключ - -a/- --all. Если это имя не указано, будет выбрана база- postgres, а если она не существует —- template1. В данном аргументе может задаваться строка подключения. В этом случае параметры в строке подключения переопределяют одноимённые параметры, заданные в командной строке. Кроме того, все параметры в строке подключения, за исключением имени базы, будут использоваться и при подключении к другим базам данных.
Переменные окружения
- PGDATABASE- PGHOST- PGPORT- PGUSER
- Параметры подключения по умолчанию 
- PG_COLOR
- Выбирает вариант использования цвета в диагностических сообщениях. Возможные значения: - always(всегда),- auto(автоматически) и- never(никогда).
Эта утилита, как и большинство других утилит Postgres Pro, также использует переменные среды, поддерживаемые libpq (см. Раздел 32.14).
Диагностика
В случае возникновения трудностей, обратитесь к описаниям VACUUM и psql, где обсуждаются потенциальные проблемы и сообщения об ошибках. Учтите, что на целевом компьютере должен работать сервер баз данных. При этом применяются все свойства подключения по умолчанию и переменные окружения, которые использует клиентская библиотека libpq.
Примечания
Утилите vacuumdb может потребоваться подключаться к серверу Postgres Pro несколько раз, и при этом она будет каждый раз запрашивать пароль. В таких случаях удобно иметь файл ~/.pgpass. За дополнительными сведениями обратитесь к Разделу 32.15.
Примеры
Очистка базы данных test: 
$vacuumdb test
Очистка и анализ для оптимизатора базы данных bigdb: 
$vacuumdb --analyze bigdb
Очистка одной таблицы foo в базе данных xyzzy и анализ только столбца bar таблицы для оптимизатора: 
$vacuumdb --analyze --verbose --table='foo(bar)' xyzzy