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