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