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
Агрессивно «замораживать» кортежи.
-
-j
njobs
--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
Пропускать отношения, которые неудаётся немедленно заблокировать для обработки.
-
-t
table
[ (
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
также принимает следующие аргументы командной строки для
параметров подключения:
-
-h
host
--host=
host
Указывает имя или адрес компьютера, на котором работает сервер. Если значение начинается с косой черты, оно используется в качестве каталога для Unix-сокета.
-
-p
port
--port=
port
Указывает порт TCP или расширение файла локального Unix-сокета, на котором сервер прослушивает соединения.
-
-U
username
--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