vacuumdb#

vacuumdb

vacuumdb

vacuumdb — Очистка мусора и анализ базы данных Tantor SE

Синтаксис

vacuumdb [connection-option...] [option...] [ -t | --table table [( столбец [,...] )] ] ... [dbname]

vacuumdb [connection-option...] [option...] [ [ -n | --schema schema ] | [ -N | --exclude-schema schema ] ] ... [dbname]

vacuumdb [connection-option...] [option...] -a | --all

Описание

vacuumdb - это утилита для очистки базы данных Tantor SE. vacuumdb также генерирует внутреннюю статистику, используемую оптимизатором запросов Tantor SE.

vacuumdb - это оболочка для SQL-команды VACUUM. Нет существенной разницы между очисткой и анализом баз данных с помощью этой утилиты и других методов доступа к серверу.

Опции

vacuumdb принимает следующие аргументы командной строки:

-a
--all

Очистка всех баз данных.

--buffer-usage-limit size

Указывает стратегию доступа к буферу размер кольцевого буфера для данного вызова vacuumdb. Этот размер используется для расчета количества общих буферов, которые будут повторно использоваться в рамках этой стратегии. См. VACUUM.

[-d] имя_базы_данных
[--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 одновременно. Этот параметр может сократить время обработки, но также увеличивает нагрузку на сервер базы данных.

vacuumdb откроет njobs соединений с базой данных, поэтому убедитесь, что значение параметра max_connections достаточно высоко для всех соединений.

Обратите внимание, что использование этого режима вместе с опцией -f (FULL) может вызвать сбои взаимной блокировки, если определенные системные каталоги обрабатываются параллельно.

--min-mxid-age mxid_age

Следует выполнять команды vacuum или analyze только для таблиц с возрастом идентификатора мультитранзакции, равным или большим mxid_age. Эта настройка полезна для приоритезации таблиц для обработки и предотвращения зацикливания идентификатора мультитранзакции (см. Раздел 24.1.5.1).

Для целей этой опции возраст идентификатора мультитранзакции отношения является наибольшим из возрастов основного отношения и его связанной таблицы TOAST, если таковая существует. Поскольку команды, выполняемые vacuumdb, также обрабатывают таблицу TOAST для отношения при необходимости, ее не нужно рассматривать отдельно.

--min-xid-age xid_age

Выполняйте команды vacuum или analyze только для таблиц с возрастом идентификатора транзакции, равным или большим значению параметра xid_age. Эта настройка полезна для приоритизации таблиц для обработки и предотвращения зацикливания идентификатора транзакции (см. Раздел 24.1.5).

Для целей этой опции возраст идентификатора транзакции отношения является наибольшим из возрастов основного отношения и его связанной таблицы TOAST, если таковая существует. Поскольку команды, выполняемые vacuumdb, также обрабатывают таблицу TOAST для отношения при необходимости, ее не нужно рассматривать отдельно.

-n schema
--schema=schema

Очистите или проанализируйте все таблицы в схема только. Несколько схем могут быть обработаны с помощью написания нескольких переключателей -n.

-N schema
--exclude-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 [,...]) ]

Очистите или проанализируйте только таблицу. Имена столбцов можно указать только в сочетании с опциями --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

Чтобы очистить все таблицы в схемах foo и bar в базе данных с именем xyzzy:

$ vacuumdb --schema='foo' --schema='bar' xyzzy

См. также

VACUUM