vacuumdb
vacuumdb — выполнить очистку и анализ базы данных Postgres Pro
Синтаксис
vacuumdb
[параметр-подключения
...] [параметр
...] [ -t
| --table
таблица
[( столбец
[,...] )] ] ... [dbname
]
vacuumdb
[параметр-подключения
...] [параметр
...] -a
| --all
Описание
Утилита vacuumdb предназначена для очистки базы данных Postgres Pro. Кроме того, vacuumdb генерирует внутреннюю статистику, которую использует оптимизатор запросов Postgres Pro.
Утилита vacuumdb представляют собой обёртку SQL-команды VACUUM
. Выполнение очистки и анализа баз данных с её помощью по сути не отличается от выполнения тех же действий при обращении к серверу другими способами.
Параметры
Утилита vacuumdb принимает следующие аргументы командной строки:
-a
--all
Очистить все базы данных.
[-d]
dbname
[--dbname=]
dbname
Указывает имя базы данных для очистки или анализа, когда не используется параметр
-a
/--all
. Если это указание отсутствует, имя базы определяется переменной окруженияPGDATABASE
. Если эта переменная не задана, именем базы будет имя пользователя, указанное для подключения. В аргументеимя_бд
может задаваться строка подключения. В этом случае параметры в строке подключения переопределяют одноимённые параметры, заданные в командной строке.--disable-page-skipping
Запретить пропуск страниц в зависимости от содержимого карты видимости.
Примечание
Этот параметр доступен только для серверов Postgres Pro версии 9.6 и новее.
-e
--echo
Выводить команды, которые vacuumdb генерирует и передаёт серверу.
-f
--full
Произвести «полную» очистку.
-F
--freeze
Агрессивно «замораживать» версии строк.
--force-index-cleanup
Всегда удалять элементы индекса, указывающие на мёртвые кортежи.
Примечание
Этот параметр доступен только для серверов PostgreSQL версии 12 и новее.
-j
число_заданий
--jobs=
число_заданий
Выполнять команды очистки и анализа в параллельном режиме, запуская их одновременно в количестве
число_заданий
. Это может сократить время обработки, но при этом увеличить нагрузку на сервер.vacuumdb будет устанавливать несколько подключений к базе данных (в количестве
число_заданий
), так что убедитесь в том, что значение max_connections достаточно велико, чтобы все эти подключения были приняты.Заметьте, что использование этого режима с параметром
-f
(FULL
) может привести к отказам из-за взаимоблокировок, если параллельно начнут обрабатываться определённые системные каталоги.--min-mxid-age
возраст_мультитранзакции
Выполнять команды очистки и анализа только для таблиц, имеющих не менее чем заданный
возраст_мультитранзакции
. Этот параметр полезен для выбора таблиц, первоочередная обработка которых поможет предотвратить зацикливание идентификаторов мультитранзакций (см. Подраздел 24.1.5.1).Применительно к данному параметру возрастом мультитранзакции для отношения считается наибольший из возрастов основного отношения и связанной с ним таблицы TOAST, если она существует. Так как команды, выполняемые утилитой vacuumdb, будут при необходимости обрабатывать не только отношение, но и таблицу TOAST, связанную с ним, рассматривать их возрасты по отдельности не имеет смысла.
Примечание
Этот параметр доступен только для серверов Postgres Pro версии 9.6 и новее.
--min-xid-age
возраст_транзакции
Выполнять команды очистки и анализа только для таблиц, имеющих не менее чем заданный
возраст_транзакции
. Этот параметр полезен для выбора таблиц, обработка которых в первую очередь поможет предотвратить зацикливание идентификаторов транзакций (см. Подраздел 24.1.5).Применительно к данному параметру возрастом транзакции для отношения считается наибольший из возрастов основного отношения и связанной с ним таблицы TOAST, если она существует. Так как команды, выполняемые утилитой vacuumdb, будут при необходимости обрабатывать не только отношение, но и таблицу TOAST, связанную с ним, рассматривать их возрасты по отдельности не имеет смысла.
Примечание
Этот параметр доступен только для серверов Postgres Pro версии 9.6 и новее.
--no-index-cleanup
Не удалять элементы индекса, указывающие на мёртвые кортежи.
Примечание
Этот параметр доступен только для серверов Postgres Pro версии 12 и новее.
--no-process-toast
Пропускать TOAST-таблицу, связанную с очищаемой таблицей (при наличии).
Примечание
Этот параметр доступен только для серверов PostgreSQL версии 14 и новее.
--no-truncate
Не отсекать пустые страницы в конце таблицы.
Примечание
Этот параметр доступен только для серверов PostgreSQL версии 12 и новее.
-P
параллельные_исполнители
--parallel=
параллельные_исполнители
Задаёт количество параллельных исполнителей для параллельной очистки. Это позволяет в ходе очистки задействовать мощности нескольких процессоров для обработки индексов. См. VACUUM.
Примечание
Этот параметр доступен только для серверов PostgreSQL версии 13 и новее.
-q
--quiet
Подавлять вывод сообщений о прогрессе выполнения.
--skip-locked
Пропускать отношения, которые не удаётся немедленно заблокировать для обработки.
Примечание
Этот параметр доступен только для серверов PostgreSQL версии 12 и новее.
-t
таблица
[ (столбец
[,...]) ]--table=
таблица
[ (столбец
[,...]) ]Производить очистку или анализ только указанной
таблицы
. Имена столбцов можно указать только в сочетании с параметрами--analyze
и--analyze-only
. Добавив дополнительные ключи-t
, можно обработать несколько таблиц.Подсказка
Если вы указываете столбцы, вам, вероятно, придётся экранировать скобки в оболочке. (См. примеры ниже.)
-v
--verbose
Вывести подробную информацию во время процесса.
-V
--version
Сообщить версию vacuumdb и завершиться.
-z
--analyze
Также вычислить статистику для оптимизатора.
-Z
--analyze-only
Только вычислить статистику для оптимизатора (не производить очистку).
--analyze-in-stages
Только вычислить статистику для оптимизатора (без очистки), подобно
--analyze-only
. При этом анализ выполняется в три этапа: на первом этапе для скорейшего получения полезной статистики используется минимально возможный ориентир статистики (см. default_statistics_target), а на последующих этапах вычисляется полная статистика.Этот параметр полезен, только когда нужно провести анализ базы данных, статистика в которой отсутствует или абсолютно неактуальна, например когда база была только что наполнена данными из копии или в результате процедуры
pg_upgrade
. Имейте в виду, что использование этого параметра для базы, в которой уже есть статистика, может привести к тому, что качество решений оптимизатора может временно ухудшиться из-за небольших ориентиров статистики на ранних этапах.-?
--help
Показать справку по аргументам командной строки vacuumdb и завершиться.
Утилита vacuumdb также принимает следующие аргументы командной строки в качестве параметров подключения:
-h
сервер
--host=
сервер
Указывает имя компьютера, на котором работает сервер. Если значение начинается с косой черты, оно определяет каталог Unix-сокета.
-p
порт
--port=
порт
Указывает TCP-порт или расширение файла локального Unix-сокета, через который сервер принимает подключения.
-U
имя_пользователя
--username=
имя_пользователя
Имя пользователя, под которым производится подключение.
-w
--no-password
Не выдавать запрос на ввод пароля. Если сервер требует аутентификацию по паролю и пароль не доступен с помощью других средств, таких как файл
.pgpass
, попытка соединения не удастся. Этот параметр может быть полезен в пакетных заданиях и скриптах, где нет пользователя, который вводит пароль.-W
--password
Принудительно запрашивать пароль перед подключением к базе данных.
Это несущественный параметр, так как vacuumdb запрашивает пароль автоматически, если сервер проверяет подлинность по паролю. Однако чтобы понять это, vacuumdb лишний раз подключается к серверу. Поэтому иногда имеет смысл ввести
-W
, чтобы исключить эту ненужную попытку подключения.--maintenance-db=
dbname
Указывает имя базы данных, к которой будет выполняться подключение для определения подлежащих очистке баз данных, когда используется ключ
-a
/--all
. Если это имя не указано, будет выбрана базаpostgres
, а если она не существует —template1
. В данном аргументе может задаваться строка подключения. В этом случае параметры в строке подключения переопределяют одноимённые параметры, заданные в командной строке. Кроме того, все параметры в строке подключения, за исключением имени базы, будут использоваться и при подключении к другим базам данных.
Переменные окружения
PGDATABASE
PGHOST
PGPORT
PGUSER
Параметры подключения по умолчанию
PG_COLOR
Выбирает вариант использования цвета в диагностических сообщениях. Возможные значения:
always
(всегда),auto
(автоматически) иnever
(никогда).
Эта утилита, как и большинство других утилит Postgres Pro, также использует переменные среды, поддерживаемые libpq (см. Раздел 36.15).
Диагностика
В случае возникновения трудностей, обратитесь к описаниям VACUUM и psql, где обсуждаются потенциальные проблемы и сообщения об ошибках. Учтите, что на целевом компьютере должен работать сервер баз данных. При этом применяются все свойства подключения по умолчанию и переменные окружения, которые использует клиентская библиотека libpq.
Примечания
Утилите vacuumdb может потребоваться подключаться к серверу Postgres Pro несколько раз, и при этом она будет каждый раз запрашивать пароль. В таких случаях удобно иметь файл ~/.pgpass
. За дополнительными сведениями обратитесь к Разделу 36.16.
Примеры
Очистка базы данных test
:
$
vacuumdb test
Очистка и анализ для оптимизатора базы данных bigdb
:
$
vacuumdb --analyze bigdb
Очистка одной таблицы foo
в базе данных xyzzy
и анализ только столбца bar
таблицы для оптимизатора:
$
vacuumdb --analyze --verbose --table='foo(bar)' xyzzy
См. также
VACUUMQ.1. recovery.conf
file merged into postgresql.conf
Postgres Pro 11 and below used a configuration file named recovery.conf
to manage replicas and standbys. Support for this file was removed in Postgres Pro 12. See the release notes for PostgreSQL 12 for details on this change.
On Postgres Pro 12 and above, archive recovery, streaming replication, and PITR are configured using normal server configuration parameters. These are set in postgresql.conf
or via ALTER SYSTEM like any other parameter.
The server will not start if a recovery.conf
exists.
The trigger_file
setting has been renamed to promote_trigger_file.
The standby_mode
setting has been removed. A standby.signal
file in the data directory is used instead. See Standby Server Operation for details.