vacuumdb

vacuumdb — провести очистку памяти и анализ базы данных QHB


Синтаксис

vacuumdb [параметр-подключения...] [параметр...] [ -t | --table таблица [( столбец [,...] )] ] ... [имя_бд]

vacuumdb [параметр-подключения...] [параметр...] -a | --all

Описание

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

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


Параметры

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

-a
--all
Очистить все базы данных.

[-d] имя_бд
[--dbname=]имя_бд
Указывает имя базы данных для очистки или анализа, когда не используется параметр -a/--all. Если этот параметр не указан, имя базы данных считывается из переменной среды PGDATABASE. Если она не установлена, используется имя пользователя, указанное для подключения. В имени_бд может задаваться строка подключения. В этом случае параметры в строке подключения переопределяют любые конфликтующие параметры в командной строке.

--disable-page-skipping
Выключить пропуск страниц на основе содержимого карты видимости.

-e
--echo
Отобразить на экране команды, которые vacuumdb генерирует и отправляет на сервер.

-f
--full
Выполнить «полную» очистку.

-F
--freeze
Агрессивно «замораживать» кортежи.

--force-index-cleanup
Всегда удалять записи индекса, указывающие на неиспользуемые кортежи.

-j число_заданий
--jobs= число_заданий
Выполнять команды очистки или анализа параллельно, запустив их одновременно в количестве число_заданий. Этот параметр может сократить время обработки, но при этом увеличивает нагрузку на сервер баз данных.
vacuumdb откроет число_заданий соединений с базой данных, поэтому необходимо установить такое значение параметра max_connections, которое бы покрыло все эти соединения.
Обратите внимание, что использование этого режима вместе с параметром -f (FULL) может привести к сбоям вследствие взаимоблокировок, если параллельно обрабатываются определенные системные каталоги.

--min-mxid-age возраст_мультитранзакции
Выполнять очистку или анализ только для таблиц с возрастом идентификатора мультитранзакции не менее указанного возраста_мультитранзакции. Этот параметр полезен при определении наиболее приоритетных таблиц, обработка которых предотвратит зацикливание идентификаторов мультитранзакций (см. подраздел Мультитранзакции и зацикливание).
В контексте этого параметра возрастом идентификатора мультитранзакции отношения является наибольший из возрастов основного отношения и связанной с ним таблицы TOAST, если таковая существует. Поскольку команды, выполняемые vacuumdb, при необходимости будут обрабатывать и связанную с отношением таблицу TOAST, их возрасты не нужно рассматривать по отдельности.

--min-xid-age возраст_транзакции
Выполнять очистку или анализ только для таблиц с возрастом идентификатора транзакции не менее указанного возраста_транзакции. Этот параметр полезен при определении наиболее приоритетных таблиц, обработка которых предотвратит зацикливание идентификаторов транзакций (см. подраздел Предотвращение ошибок зацикливания идентификаторов транзакций).
В контексте этого параметра возрастом идентификатора транзакции отношения является наибольший из возрастов основного отношения и связанной с ним таблицы TOAST, если таковая существует. Поскольку команды, выполняемые vacuumdb, при необходимости будут обрабатывать и связанную с отношением таблицу TOAST, их возрасты не нужно рассматривать по отдельности.

--no-index-cleanup
На удалять записи индекса, указывающие на неиспользуемые кортежи.

--no-process-toast
Пропускать таблицу TOAST, связанную с очищаемой таблицей (если таковая имеется).

--no-truncate
Не усекать пустые страницы в конце таблицы.

-P параллельные_рабочие_процессы
--parallel=параллельные_рабочие_процессы
Задать количество параллельных рабочих процессов для параллельной очистки. Это позволяет при очистке эффективно использовать несколько ЦП для обработки индексов. См. VACUUM.

-q
--quiet
Не отображать сообщения о прогрессе выполнения.

--skip-locked
Пропускать отношения, которые невозможно немедленно заблокировать для обработки.

-t таблица [ (столбец [,...]) ]
--table=таблица [ (столбец [,...]) ]
Очистить или проанализировать только таблицу. Имена столбцов можно указать только при наличии параметров --analyze или --analyze-only. Задав ключ -t несколько раз, можно очистить несколько таблиц.

Совет
Если задаете столбцы, скорее всего, вам придется экранировать скобки в оболочке. (См. примеры ниже.)

-v
--verbose
Выводить подробную информацию во время обработки.

-V
--version
Вывести версию vacuumdb и завершиться.

-z
--analyze
Дополнительно вычислить статистику для оптимизатора.

-Z
--analyze-only
Только вычислить статистику для оптимизатора (без очистки).

--analyze-in-stages
Только вычислить статистику для оптимизатора (без очистки), как с параметром --analyze-only. Чтобы быстрее получить полезную статистику, выполняется в несколько этапов (в настоящее время их три) с различными параметрами конфигурации.
Этот параметр полезен для анализа базы данных, которая только что была заполнена при восстановлении данных из дампа или с помощью утилиты qhb_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. Если этот параметр не указан, будет выбрана база данных qhb, а если она не существует — template1. В данном аргументе может задаваться строка подключения. В этом случае параметры в строке подключения переопределят все конфликтующие параметры в командной строке. Кроме того, параметры в строке подключения, отличающиеся от самого имени базы данных, будут повторно использоваться при подключении к другим базам данных.


Переменные среды

PGDATABASE
PGHOST
PGPORT
PGUSER
Параметры подключения по умолчанию.

PG_COLOR
Указывает, использовать ли цвет в диагностических сообщениях. Возможные значения: always (всегда), auto (автоматически) и never (никогда).

Кроме того, эта утилита, как и большинство других утилит QHB, использует переменные среды, поддерживаемые libpq (см. раздел Переменные среды).


Диагностика

В случае возникновения затруднений обратитесь к справочным страницам VACUUM и psql, где рассматриваются потенциальные проблемы и сообщения об ошибках. Сервер баз данных должен работать на целевом хосте. Кроме того, будут применяться параметры подключения и переменные среды, которые по умолчанию используются библиотекой libpq на стороне клиента.


Примечания

Утилите vacuumdb может потребоваться несколько раз подключиться к серверу QHB, каждый раз запрашивая пароль. В таких случаях удобно иметь файл ~/.pgpass. Дополнительную информацию см. в разделе Файл паролей.


Примеры

Очистка базы данных test:

$ vacuumdb test

Очистка и анализ для оптимизатора базы данных с именем bigdb:

$ vacuumdb --analyze bigdb

Очистка одной таблицы foo в базе данных с именем xyzzy и анализ одного столбца bar этой таблицы для оптимизатора:

$ vacuumdb --analyze --verbose --table='foo(bar)' xyzzy

См. также

VACUUM