vacuumdb — выполнить очистку и анализ базы данных PostgreSQL
vacuumdb [параметр-подключения...] [параметр...]
[
--table | -t
таблица
[( столбец [,...] )]
]
... [имя_бд]
vacuumdb [параметр-подключения...] [параметр...] --all | -a
Утилита vacuumdb предназначена для очистки базы данных PostgreSQL. Кроме того, vacuumdb генерирует внутреннюю статистику, которую использует оптимизатор запросов PostgreSQL.
Утилита vacuumdb представляют собой обёртку SQL-команды VACUUM. Выполнение очистки и анализа баз данных с её помощью по сути не отличается от выполнения тех же действий при обращении к серверу другими способами.
Утилита vacuumdb принимает следующие аргументы командной строки:
-a--allОчистить все базы данных.
[-d] имя_бд[--dbname=]имя_бдЗадаёт имя базы данных, подлежащей очистке. Если это имя не задано и отсутствует параметр -a (или --all), имя базы данных берётся из переменной окружения PGDATABASE. Если и эта переменная не задана, выбирается имя подключающегося пользователя.
-e--echoВыводить команды, которые vacuumdb генерирует и передаёт серверу.
-f--fullПроизвести «полную» очистку.
-F--freezeАгрессивно «замораживать» версии строк.
-j njobs--jobs=njobsВыполнять команды VACUUM или ANALYZE в параллельном режиме, запуская одновременно njobs команд. Это сокращает время обработки, но увеличивает нагрузку на сервер.
vacuumdb откроет njobs подключений к базе данных, так что убедитесь в том, что значение max_connections достаточно велико, чтобы все эти подключения были приняты.
Заметьте, что использование этого режима с параметром -f (FULL) может привести к отказам из-за взаимоблокировок, если параллельно начнут обрабатываться определённые системные каталоги.
-q--quietПодавлять вывод сообщений о прогрессе выполнения.
-t таблица [ (столбец [,...]) ]--table=таблица [ (столбец [,...]) ]Производить очистку или анализ только указанной таблицы. Имена столбцов можно указать только в сочетании с параметрами --analyze и --analyze-only. Добавив дополнительные ключи -t, можно обработать несколько таблиц.
Если вы указываете столбцы, вам, вероятно, придётся экранировать скобки в оболочке. (См. примеры ниже.)
-v--verboseВывести подробную информацию во время процесса.
-V--versionСообщить версию vacuumdb и завершиться.
-z--analyzeТакже вычислить статистику для оптимизатора.
-Z--analyze-onlyТолько вычислить статистику для оптимизатора (не производить очистку).
--analyze-in-stagesТолько вычислить статистику для оптимизатора (без очистки), подобно --analyze-only. Но для скорейшего получения полезной статистики, выполнить анализ в несколько проходов (в настоящее время, три) с разными параметрами.
Этот параметр полезен при необходимости провести анализ базы данных, только что наполненной данными из архива или командой pg_upgrade. С этим параметром vacuumdb постарается получить некоторую статистику как можно скорее, чтобы базой можно было пользоваться, а на следующих проходах вычислит полную статистику.
-?--helpПоказать справку по аргументам командной строки vacuumdb и завершиться.
Утилита reindexdb также принимает следующие аргументы командной строки в качестве параметров подключения:
-h сервер--host=серверУказывает имя компьютера, на котором запущен сервер. Если значение начинается с косой черты, оно интерпретируется как имя каталога с доменным сокетом Unix.
-p порт--port=портУказывает TCP-порт или расширение файла Unix-сокета, на котором сервер слушает подключения.
-U имя_пользователя--username=имя_пользователяИмя пользователя, под которым производится подключение.
-w--no-passwordНе выдавать запрос на ввод пароля. Если сервер требует аутентификацию по паролю и пароль не доступен с помощью других средств, таких как файл .pgpass, попытка соединения не удастся. Этот параметр может быть полезен в пакетных заданиях и скриптах, где нет пользователя, который вводит пароль.
-W--passwordПринудительно запрашивать пароль перед подключением к базе данных.
Это несущественный параметр, так как vacuumdb запрашивает пароль автоматически, если сервер проверяет подлинность по паролю. Однако, чтобы понять это, vacuumdb лишний раз подключается к серверу. Поэтому иногда имеет смысл ввести -W, чтобы исключить эту ненужную попытку подключения.
--maintenance-db=имя_бдЗадаёт имя базы данных, через подключение к которой будут находиться другие базы, подлежащие очистке. По умолчанию используется postgres, а в случае её отсутствия — template1.
PGDATABASEPGHOSTPGPORTPGUSERПараметры подключения по умолчанию
Эта утилита, как и большинство других утилит PostgreSQL, также использует переменные среды, поддерживаемые libpq (см. Раздел 32.14).
В случае возникновения трудностей, обратитесь к описаниям VACUUM и psql, где обсуждаются потенциальные проблемы и сообщения об ошибках. Учтите, что на целевом компьютере должен работать сервер баз данных. При этом применяются все свойства подключения по умолчанию и переменные окружения, которые использует клиентская библиотека libpq.
Утилите vacuumdb может потребоваться подключаться к серверу PostgreSQL несколько раз, и при этом она будет каждый раз запрашивать пароль. В таких случаях удобно иметь файл ~/.pgpass. За дополнительными сведениями обратитесь к Разделу 32.15.
Очистка базы данных test:
$vacuumdb test
Очистка и анализ для оптимизатора базы данных bigdb:
$vacuumdb --analyze bigdb
Очистка одной таблицы foo в базе данных xyzzy и анализ только столбца bar этой таблицы для оптимизатора:
$vacuumdb --analyze --verbose --table 'foo(bar)' xyzzy