Сопровождение базы данных
Приложение 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