vacuumdb сборка мусора и анализ базы данных QHB
vacuumdb - сборка мусора и анализ базы данных QHB
Синтаксис
vacuumdb [connection-option...] [option...] [ --table | -t table [( column [,...] )] ] ... [dbname]
vacuumdb [connection-option...] [option...] --all | -a
Описание
vacuumdb утилита для очистки базы данных QHB. vacuumdb также
генерирует внутреннюю статистику, используемую оптимизатором запросов
QHB.
ⓘ
vacuumdb- это "обертка" над SQL командой VACUUM. Нет разницы между очисткой и анализом баз данных с помощью этой утилиты или же иным способом при обращении к серверу
Параметры
vacuumdb принимает следующие аргументы командной строки:
-
-a
--allОбрабатывать все базы данных.
-
[-d]dbname
[--dbname=]dbnameУказывает имя базы данных, которая будет очищена или проанализирована. Если не указывать и не использовать параметр
-a(или--all), имя базы данных считывается из переменной окружения PGDATABASE. Если не установлена переменная окружения, используется имя пользователя, указанное в параметрах подключения. -
--disable-page-skippingОтключить пропуск страниц на основе содержимого карты видимости.
-
-e
--echoВыводить команды, которые
vacuumdbгенерирует и отправляет на сервер. -
-f
--fullВыполнить «полную» очистку.
-
-F
--freezeАгрессивно «замораживать» кортежи.
-
-jnjobs
--jobs=njobsВыполняет вакуум или анализ параллельно, запуская несколько (в количестве njobs) команд одновременно. Этот параметр сокращает время обработки, но также увеличивает нагрузку на сервер базы данных.
vacuumdbоткрывает njobs соединений с базой данных, поэтому убедитесь, что параметрmax_connectionsдостаточно высок, чтобы принять все соединения.Обратите внимание, что использование этого режима вместе с параметром
-f(FULL) может привести к сбоям из-за взаимоблокировки, если определенные системные каталоги обрабатываются параллельно. -
--min-mxid-age mxid_ageВыполняет вакуум или анализ только для таблиц с возрастом идентификатора мультитранзакции не менее
mxid_age. Этот параметр полезен для определения приоритетности таблиц для обработки, чтобы предотвратить зацикливание при обходе идентификатора мультитранзакции. (см. раздел Мультитранзакции и зацикливание).Для этого параметра возраст идентификатора мультитранзакции для отношения является наибольшим из возрастов основного отношения и связанной с ним таблицы TOAST, если такая существует. Так как команды, выполняемые
vacuumdbтакже будут при необходимости обрабатывать таблицу TOAST для отношений, их возрасты не нужно рассматривать по отдельности. -
--min-xid-age xid_ageВыполняет вакуум или анализ только для таблиц с возрастом идентификатора транзакции не менее
xid_age. Этот параметр полезен для определения приоритетности таблиц для обработки, чтобы предотвратить зацикливание идентификатора транзакции (см. раздел Предотвращение ошибок зацикливания идентификатора транзакции).Для этого параметра возраст идентификатора транзакции для отношения является наибольшим из возрастов основного отношения и связанной с ним таблицы TOAST, если такая существует. Поскольку команды, выполняемые
vacuumdb, также при необходимости будут обрабатывать таблицу TOAST для отношений, их возрасты не нужно рассматривать по отдельности. -
-q
--quietНе отображать сообщения о прогрессе выполнения.
-
--skip-lockedПропускать отношения, которые не удаётся немедленно заблокировать для обработки.
-
-ttable[ (column[,...]) ]
--table=table[ (column[,...]) ]Очистить или проанализировать конкретные таблицы. Имена столбцов могут быть указаны только вместе с
--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 также принимает следующие аргументы командной строки для
параметров подключения:
-
-hhost
--host=hostУказывает имя или адрес компьютера, на котором работает сервер. Если значение начинается с косой черты, оно используется в качестве каталога для Unix-сокета.
-
-pport
--port=portУказывает порт TCP или расширение файла локального Unix-сокета, на котором сервер прослушивает соединения.
-
-Uusername
--username=usernameИмя пользователя для подключения как.
-
-w
--no-passwordНе запрашивать ввод пароля. Если серверу требуется аутентификация по паролю, а пароль недоступен другими способами, такими как файл .pgpass, попытка подключения завершится неудачно. Эта опция может быть полезна в пакетных заданиях и сценариях, где нет ни одного пользователя для ввода пароля.
-
-W
--passwordЭта опция не является существенной, так как
vacuumdbавтоматически запросит пароль, если сервер требует аутентификацию по паролю. Тем не менее,vacuumdbпотратит одну дополнительную попытку подключения для аутентификации. В некоторых случаях стоит ввести-W, чтобы не делать эту попытку. -
--maintenance-db=dbnameЗадает имя базы данных для подключения, чтобы определить какие другие базы данных должны быть очищены или проанализированны. Если не указано иное, будет использоваться база данных QHB, а если и её не существует, то будет использоваться
template1.
Окружение
PGDATABASE
PGHOST
PGPORT
PGUSER
- Параметры подключения по умолчанию
PG_COLOR
- Указывает, использовать ли цвета в диагностических сообщениях. Возможные значения always, auto, never.
Эта утилита, как и большинство других утилит QHB, также использует переменные среды, поддерживаемые libpq.
Диагностика
В случае затруднений см. VACUUM и qsql для обсуждения потенциальных проблем и сообщений об ошибках. Сервер базы данных должен работать на целевом хосте. Кроме того, будут применяться любые параметры подключения по умолчанию и переменные среды, используемые интерфейсной библиотекой libpq.
Примечания
vacuumdb может потребоваться несколько раз подключиться к серверу QHB, каждый раз запрашивая пароль. В таких случаях удобно иметь файл ~/.pgpass.
Примеры
Очистка базы данных test:
$ vacuumdb test
Очистка и анализ для оптимизатора базы данных с именем bigdb:
$ vacuumdb --analyze bigdb
Чтобы очистить одну таблицу foo в базе данных с именем xyzzy и
проанализировать один столбец таблицы для оптимизатора:
$ vacuumdb --analyze --verbose --table='foo(bar)' xyzzy