Иллюстрированный самоучитель по PostgreSQL

Сопровождение базы данных

Приложение vacuumdb

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

Кроме того, сценарию передаются параметры подключения к PostgreSQL, что позволяет использовать его в удаленном режиме (то есть без предварительного подключения к компьютеру при помощи терминального клиента и последующего выполнения программ vacuumdb или psql с удаленного компьютера). Впрочем, для этого режим аутентификации в файле pg_hba.conf должен быть настроен для внешнего доступа (за дополнительной информацией обращайтесь к главе 8).

Синтаксис запуска приложения vacuumdb:

vacuumdb [ параметры ] [ бдза_данных ]

Ключи командной строки сценария vacuumdb, как и сценариев createdb и dropdb, могут задаваться как с одним дефисом, так и с двумя дефисами в стиле GNU. Обязательным является только параметр база_дапных (который может быть заменен ключом --all); этот параметр определяет базу данных, с которой выполняются операции очистки и анализа. Строка параметры определяет режим выполнения команды VACUUM. Ниже приведен полный список ключей приложения vacuumdb.

  • – h хост, --host=хост. Хост, с которым устанавливается связь для очистки базы данных. Ключ используется для очистки удаленных баз данных.
  • – р порт, --port=порт. Порт, по которому должно производиться подключение к серверу, вместо порта по умолчанию (обычно 5432, хотя при компиляции PostgreSQL можно задать другой порт при помощи флага --with-pgport).
  • – U пользователь, --usere=пользователь. Имя пользователя, с которым производится подключение к PostgreSQL для очистки базы данных (вместо имени системного пользователя, запустившего программу vacuumdb).
  • – W, --password. Ключ передается без параметров и обеспечивает запрос пароля у пользователя. Это происходит автоматически, если в файле pg_hba.conf хост, от которого поступил запрос, не объявлен доверенным.
  • – d база_данных, --base=база_данных. Имя базы данных, для которой выполняется команда VACUUM. Ключ – d является взаимоисключающим по отношению к ключу – а.
  • – а, --аll. Команда VACUUM с заданными параметрами применяется ко всем базам данных, присутствующим в системном каталоге.
  • – z, --analyze. Аналог ключевого слова ANALYZE в команде SQL VACUUM. Обновляет статистику распределения данных в полях, используемую оптимизатором запросов в процессе внутреннего планирования.
  • – t 'таблица [ (поле\_,…])]', --table='таблица [ (поле[,…])]'. Ключ определяет таблицу (или конкретные поля в таблице), обрабатываемые командой VACUUM. Для обработки отдельных полей должен быть установлен ключ: – analyze.
  • – v, --verbose. Аналог ключевого слова VERBOSE в команде SQL VACUUM. Обеспечивает вывод подробного внутреннего отчета по результатам выполнения команды VACUUM.
  • – е, --echo. Ключ передается без параметров. При включении вывода эха запрос, передаваемый PostgreSQL, выводится на экран в момент его выполнения программой vacuumdb.
  • – q, --quiet. Ключ передается без параметров и запрещает вывод данных в стандартный поток stdout (хотя ошибки по-прежнему направляются в стандартный поток stderr).

В листинге 9.16 приведен пример использования сценария vacuumdb для сервера базы данных booktown. Ключ – U указывает, что для подключения должно использоваться имя пользователя manager, а флаг --all обеспечивает последовательную обработку всех баз данных в системном каталоге.

Листинг 9.16. Применение сценария vacuumdb ко всем базам данных.

[jworsley@booktown – ]$ vacuumdb – U manager --all
Vacuuming postgres
VACUUM
Vacuuming booktown
VACUUM
Vacuuming tempiatel
VACUUM

Как упоминалось выше, параметры подключения позволяют легко выполнять сценарий vacuumdb с удаленного сервера. В листинге 9.17 происходит практически то же самое, что и в листинге 9.16, но на этот раз ключ – h определяет удаленный сервер с именем booktown.commandprompt.com. Кроме того, в листинге 9.17 обрабатывается конкретная база данных booktown (вместо чистки всех баз данных).

Листинг 9.17. Применение сценария vacuumdb к удаленной базе данных.

[jworsley@cmd ~]$ vacuumdb – h booktown.commandprompt.com – U manager booktown
VACUUM
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.