vacuumdb — выполнить очистку и анализ базы данных Postgres Pro
vacuumdb [параметр-подключения...] [параметр...]
[
-t | --table
таблица
[( столбец [,...] )]
]
... [
dbname | -a | --all
]
vacuumdb [параметр-подключения...] [параметр...]
[
-n | --schema
схема
]
... [
dbname | -a | --all
]
vacuumdb [параметр-подключения...] [параметр...]
[
-N | --exclude-schema
схема
]
... [
dbname | -a | --all
]
Утилита vacuumdb предназначена для очистки базы данных Postgres Pro. Кроме того, vacuumdb генерирует внутреннюю статистику, которую использует оптимизатор запросов Postgres Pro.
Утилита vacuumdb представляют собой обёртку SQL-команды VACUUM. Выполнение очистки и анализа баз данных с её помощью по сути не отличается от выполнения тех же действий при обращении к серверу другими способами.
Утилита vacuumdb принимает следующие аргументы командной строки:
-a--allОчистить все базы данных.
--buffer-usage-limit размерУказывает размер кольцевого буфера в стратегии доступа к буферу для заданного вызова vacuumdb. Указанный размер используется для вычисления числа общих буферов, повторно используемых в рамках стратегии. См. VACUUM.
[-d] dbname[--dbname=]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 возраст_мультитранзакцииВыполнять команды очистки и анализа только для таблиц, имеющих не менее чем заданный возраст_мультитранзакции. Этот параметр полезен для выбора таблиц, первоочередная обработка которых поможет предотвратить зацикливание идентификаторов мультитранзакций (см. Подраздел 24.1.5.1).
Применительно к данному параметру возрастом мультитранзакции для отношения считается наибольший из возрастов основного отношения и связанной с ним таблицы TOAST, если она существует. Так как команды, выполняемые утилитой vacuumdb, будут при необходимости обрабатывать не только отношение, но и таблицу TOAST, связанную с ним, рассматривать их возрасты по отдельности не имеет смысла.
--min-xid-age возраст_транзакцииВыполнять команды очистки и анализа только для таблиц, имеющих не менее чем заданный возраст_транзакции. Этот параметр полезен для выбора таблиц, обработка которых в первую очередь поможет предотвратить зацикливание идентификаторов транзакций (см. Подраздел 24.1.5).
Применительно к данному параметру возрастом транзакции для отношения считается наибольший из возрастов основного отношения и связанной с ним таблицы TOAST, если она существует. Так как команды, выполняемые утилитой vacuumdb, будут при необходимости обрабатывать не только отношение, но и таблицу TOAST, связанную с ним, рассматривать их возрасты по отдельности не имеет смысла.
--missing-stats-onlyАнализировать только те отношения, по которым нет статистики для столбцов, индексных выражений или объектов расширенной статистики. При использовании с --analyze-in-stages этот параметр запрещает vacuumdb временно заменять существующую статистику на статистику, сформированную с пониженными значениями ориентиров, избегая тем самым временного ухудшения качества решений оптимизатора запросов.
Этот параметр может использоваться только в сочетании с --analyze-only или --analyze-in-stages.
Обратите внимание, что для использования параметра --missing-stats-only требуются права SELECT на системные каталоги pg_statistic и pg_statistic_ext_data, которые по умолчанию предоставлены только суперпользователям.
-n схема--schema=схемаПроизводить очистку или анализ всех таблиц только в одной схеме. Добавив дополнительные ключи -n, можно очистить таблицы в нескольких схемах.
-N схема--exclude-schema=схемаНе производить очистку или анализ каких-либо таблиц в указанной схеме. Добавив дополнительные ключи -N, можно исключить из очистки таблицы в нескольких схемах.
--no-index-cleanupНе удалять элементы индекса, указывающие на мёртвые кортежи.
--no-process-mainПропускать основное отношение.
--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. При этом анализ выполняется в три этапа: на первом этапе для скорейшего получения полезной статистики используется минимально возможный ориентир статистики (см. 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. В данном аргументе может задаваться строка подключения. В этом случае параметры в строке подключения переопределяют одноимённые параметры, заданные в командной строке. Кроме того, все параметры в строке подключения, за исключением имени базы, будут использоваться и при подключении к другим базам данных.
PGDATABASEPGHOSTPGPORTPGUSERПараметры подключения по умолчанию
PG_COLORВыбирает вариант использования цвета в диагностических сообщениях. Возможные значения: always (всегда), auto (автоматически) и never (никогда).
Эта утилита, как и большинство других утилит Postgres Pro, также использует переменные среды, поддерживаемые libpq (см. Раздел 35.15).
В случае возникновения трудностей, обратитесь к описаниям VACUUM и psql, где обсуждаются потенциальные проблемы и сообщения об ошибках. Учтите, что на целевом компьютере должен работать сервер баз данных. При этом применяются все свойства подключения по умолчанию и переменные окружения, которые использует клиентская библиотека libpq.
Очистка базы данных 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