vacuumdb#
vacuumdb
vacuumdb — Очистка мусора и анализ базы данных Tantor SE
Синтаксис
vacuumdb
[connection-option
...] [option
...]
[
-t
| --table
table
[( столбец
[,...] )]
]
... [dbname
]
vacuumdb
[connection-option
...] [option
...] -a
| --all
Описание
vacuumdb - это утилита для очистки базы данных Tantor SE. vacuumdb также генерирует внутреннюю статистику, используемую оптимизатором запросов Tantor SE.
vacuumdb - это оболочка для SQL-команды VACUUM
.
Нет существенной разницы между очисткой и анализом баз данных с помощью этой утилиты и других методов доступа к серверу.
Опции
vacuumdb принимает следующие аргументы командной строки:
-a
--all
Очистка всех баз данных.
[-d]
имя_базы_данных
[--dbname=]
имя_базы_данных
Указывает имя базы данных, которую необходимо очистить или проанализировать, когда не используется опция
-a
/--all
. Если это не указано, имя базы данных считывается из переменной средыPGDATABASE
. Если она не установлена, используется имя пользователя, указанное для подключения.dbname
может быть строкой подключения. Если это так, параметры строки подключения переопределяют любые конфликтующие параметры командной строки.--disable-page-skipping
Отключите пропуск страниц на основе содержимого карты видимости.
Примечание
Эта опция доступна только для серверов, работающих на PostgreSQL 9.6 и более поздних версиях.
-e
--echo
Отобразите команды, которые генерирует и отправляет на сервер приложение vacuumdb.
-f
--full
Выполните “полное” очистку.
-F
--freeze
Агрессивно “замораживайте” кортежи.
--force-index-cleanup
Всегда удаляйте индексные записи, указывающие на удаленные кортежи.
Примечание
Эта опция доступна только для серверов, работающих на PostgreSQL 12 и более поздних версиях.
-j
njobs
--jobs=
njobs
Выполняйте команды vacuum или analyze параллельно, запуская команды
njobs
одновременно. Этот параметр может сократить время обработки, но также увеличивает нагрузку на сервер базы данных.vacuumdb откроет
njobs
соединений с базой данных, поэтому убедитесь, что значение параметра max_connections достаточно высоко для всех соединений.Обратите внимание, что использование этого режима вместе с опцией
-f
(FULL
) может вызвать сбои взаимной блокировки, если определенные системные каталоги обрабатываются параллельно.--min-mxid-age
mxid_age
Следует выполнять команды vacuum или analyze только для таблиц с возрастом идентификатора мультитранзакции, равным или большим
mxid_age
. Эта настройка полезна для приоритезации таблиц для обработки и предотвращения зацикливания идентификатора мультитранзакции (см. Раздел 24.1.5.1).Для целей этой опции возраст идентификатора мультитранзакции отношения является наибольшим из возрастов основного отношения и его связанной таблицы TOAST, если таковая существует. Поскольку команды, выполняемые vacuumdb, также обрабатывают таблицу TOAST для отношения при необходимости, ее не нужно рассматривать отдельно.
Примечание
Эта опция доступна только для серверов, работающих на PostgreSQL 9.6 и более поздних версиях.
--min-xid-age
xid_age
Выполняйте команды vacuum или analyze только для таблиц с возрастом идентификатора транзакции, равным или большим значению параметра
xid_age
. Эта настройка полезна для приоритизации таблиц для обработки и предотвращения зацикливания идентификатора транзакции (см. Раздел 24.1.5).Для целей этой опции возраст идентификатора транзакции отношения является наибольшим из возрастов основного отношения и его связанной таблицы TOAST, если таковая существует. Поскольку команды, выполняемые vacuumdb, также обрабатывают таблицу TOAST для отношения при необходимости, ее не нужно рассматривать отдельно.
Примечание
Эта опция доступна только для серверов, работающих на PostgreSQL 9.6 и более поздних версиях.
--no-index-cleanup
Не удаляйте индексные записи, указывающие на удаленные кортежи.
Примечание
Эта опция доступна только для серверов, работающих на PostgreSQL 12 и более поздних версиях.
--no-process-toast
Пропустить TOAST-таблицу, связанную с таблицей для очистки, если таковая имеется.
Примечание
Эта опция доступна только для серверов, работающих на Tantor SE 14 и более поздних версиях.
--no-truncate
Не обрезайте пустые страницы в конце таблицы.
Примечание
Эта опция доступна только для серверов, работающих на PostgreSQL 12 и более поздних версиях.
-P
parallel_workers
--parallel=
parallel_workers
Укажите количество параллельных рабочих процессов для параллельной очистки. Это позволяет использовать несколько процессоров для обработки индексов. См. VACUUM.
Примечание
Эта опция доступна только для серверов, работающих на PostgreSQL 13 и более поздних версиях.
-q
--quiet
Не отображать сообщения о ходе выполнения.
--skip-locked
Пропустить отношения, которые нельзя немедленно заблокировать для обработки.
Примечание
Эта опция доступна только для серверов, работающих на PostgreSQL 12 и более поздних версиях.
-t
table
[ (column
[,...]) ]--table=
table
[ (column
[,...]) ]Очистите или проанализируйте только
таблицу
. Имена столбцов можно указать только в сочетании с опциями--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
--host=
host
Указывает имя хоста машины, на которой работает сервер. Если значение начинается с косой черты, оно используется в качестве каталога для Unix-доменного сокета.
-p
port
--port=
port
Указывает TCP-порт или расширение локального файла сокета Unix, на котором сервер прослушивает соединения.
-U
username
--username=
username
Имя пользователя для подключения.
-w
--no-password
Не запрашивать пароль. Если сервер требует аутентификации по паролю и пароль не доступен другими средствами, такими как файл
.pgpass
, попытка подключения завершится неудачей. Этот параметр может быть полезен в пакетных заданиях и скриптах, где отсутствует пользователь, чтобы ввести пароль.-W
--password
Принудите vacuumdb запросить пароль перед подключением к базе данных.
Эта опция никогда не является обязательной, так как vacuumdb автоматически запросит пароль, если сервер требует аутентификацию по паролю. Однако vacuumdb потратит попытку подключения, чтобы узнать, что сервер требует пароль. В некоторых случаях стоит набрать
-W
, чтобы избежать дополнительной попытки подключения.--maintenance-db=
dbname
Сообщает имя базы данных, к которой нужно подключиться для определения баз данных, которые должны быть проанализированы при использовании опции
-a
/--all
. Если не указано, будет использоваться база данныхpostgres
, или, если она не существует, будет использоваться база данныхtemplate1
. Это может быть строка подключения. Если это так, параметры строки подключения переопределят любые конфликтующие параметры командной строки. Кроме того, параметры строки подключения, отличные от самого имени базы данных, будут использоваться при подключении к другим базам данных.
Окружение
PGDATABASE
PGHOST
PGPORT
PGUSER
Параметры подключения по умолчанию
PG_COLOR
Определяет, следует ли использовать цвет в диагностических сообщениях. Возможные значения:
always
,auto
иnever
.
Эта утилита, как и большинство других утилит Tantor SE, также использует переменные среды, поддерживаемые libpq (см. Раздел 32.15).
Диагностика
В случае затруднений см. VACUUM и psql для обсуждения возможных проблем и сообщений об ошибках. Сервер базы данных должен работать на целевом хосте. Кроме того, будут применяться любые настройки соединения по умолчанию и переменные среды, используемые библиотекой libpq для интерфейса.
Примечания
vacuumdb может потребоваться подключиться несколько раз к серверу Tantor SE, запрашивая пароль каждый раз. В таких случаях удобно иметь файл ~/.pgpass
. См. Раздел 32.16 для получения дополнительной информации.
Примеры
Для очистки базы данных test
:
$
vacuumdb test
Чтобы очистить и проанализировать базу данных с именем
bigdb
для оптимизатора:
$
vacuumdb --analyze bigdb
Чтобы очистить отдельную таблицу foo
в базе данных с именем xyzzy
и проанализировать отдельный столбец bar
таблицы для оптимизатора:
$
vacuumdb --analyze --verbose --table='foo(bar)' xyzzy