26.4. Отчет о прогрессе#
26.4. Отчет о прогрессе #
Tantor SE-1C имеет возможность отображать прогресс выполнения определенных команд во время их выполнения. В настоящее время, только следующие команды поддерживают отчет о прогрессе: ANALYZE
, CLUSTER
, CREATE INDEX
, VACUUM
, COPY
и BASE_BACKUP (то есть команда репликации, которую выполняет pg_basebackup для создания базовой резервной копии).
В будущем это может быть расширено.
26.4.1. Отчетность о прогрессе ANALYZE #
Всякий раз, когда выполняется команда ANALYZE
, представление pg_stat_progress_analyze
будет содержать строку для каждого бэкенда, который в данный момент выполняет эту команду. Таблицы ниже описывают информацию, которая будет отображаться, и предоставляют информацию о том, как ее интерпретировать.
Таблица 26.37. pg_stat_progress_analyze
View
Тип столбца Описание |
---|
Идентификатор процесса бэкенда. |
OID базы данных, к которой подключен этот бэкенд. |
Имя базы данных, к которой подключен этот бэкенд. |
OID анализируемой таблицы. |
Текущая фаза обработки. См. Таблица 26.38. |
Общее количество блоков кучи, которые будут выбраны для выборки. |
Количество просканированных блоков кучи. |
Количество расширенной статистики. |
Количество вычисленных расширенных статистических данных. Этот счетчик увеличивается только тогда, когда фаза |
Количество дочерних таблиц. |
Количество просканированных дочерних таблиц. Этот счетчик увеличивается только в фазе |
OID дочерней таблицы, которая в данный момент сканируется. Это поле
действительно только в фазе
|
Таблица 26.38. АНАЛИЗ Фазы
Фаза | Описание |
---|---|
initializing | Команда готовится начать сканирование кучи. Эта фаза ожидается очень короткой. |
acquiring sample rows |
Команда в настоящее время сканирует таблицу, указанную в поле relid , чтобы получить выборочные строки.
|
acquiring inherited sample rows |
В настоящее время команда сканирует дочерние таблицы для получения образцовых строк.
Столбцы child_tables_total ,
child_tables_done и
current_child_table_relid содержат
информацию о прогрессе в этой фазе.
|
computing statistics | Команда вычисляет статистику на основе выборки строк, полученной во время сканирования таблицы. |
computing extended statistics | Команда вычисляет расширенную статистику на основе выборочных строк, полученных во время сканирования таблицы. |
finalizing analyze |
Команда обновляет таблицу pg_class . По завершении этой
фазы команда ANALYZE завершится.
|
Примечание
Обратите внимание, что при выполнении команды ANALYZE
на секционированной таблице, также рекурсивно анализируются все ее секции.
В этом случае, сначала отчет о прогрессе выполнения команды ANALYZE
предоставляется для родительской таблицы, где собираются статистические данные о наследовании, а затем для каждой секции.
26.4.2. Отчеты о прогрессе CLUSTER #
Когда выполняются команды CLUSTER
или VACUUM FULL
, представление pg_stat_progress_cluster
будет содержать строку для каждого бэкенда, который в данный момент выполняет одну из этих команд. В таблицах ниже описана информация, которая будет отображаться, и предоставлена информация о том, как ее интерпретировать.
Таблица 26.39. pg_stat_progress_cluster
View
Тип столбца Описание |
---|
Идентификатор процесса бэкенда. |
OID базы данных, к которой подключен этот бэкенд. |
Имя базы данных, к которой подключен этот бэкенд. |
OID таблицы, которая будет кластеризована. |
Команда, которая выполняется. Либо |
Текущая фаза обработки. См. Таблица 26.40. |
Если таблица сканируется с использованием индекса, это OID используемого индекса; в противном случае, это ноль. |
Количество просканированных кортежей кучи.
Этот счетчик увеличивается только при выполнении фазы
|
Количество записанных кортежей кучи.
Этот счетчик увеличивается только в фазе
|
Общее количество блоков кучи в таблице. Это число сообщается
на начало |
Количество просканированных блоков кучи. Этот счетчик увеличивается в фазе |
Количество перестроенных индексов. Этот счетчик увеличивается только тогда, когда фаза
равна |
Таблица 26.40. Фазы CLUSTER и VACUUM FULL
Фаза | Описание |
---|---|
initializing | Команда готовится начать сканирование кучи. Эта фаза ожидается очень короткой. |
seq scanning heap | Команда в настоящее время последоательно сканирует таблицу. |
index scanning heap |
CLUSTER в настоящее время сканирует таблицу с использованием индексного сканирования.
|
sorting tuples |
CLUSTER в настоящее время сортирует кортежи.
|
writing new heap |
CLUSTER в настоящее время записывает новую кучу.
|
swapping relation files | Команда в настоящее время выполняет обмен вновь созданными файлами на месте. |
rebuilding index | Команда в настоящее время выполняет перестроение индекса. |
performing final cleanup |
Команда выполняет завершающую очистку. По завершении этой фазы, команда CLUSTER
или VACUUM FULL завершится.
|
26.4.3. КОПИРОВАТЬ Отчет о прогрессе #
Всякий раз, когда выполняется команда COPY
, представление pg_stat_progress_copy
будет содержать одну строку для каждого бэкенда, который в данный момент выполняет команду COPY
. В таблице ниже описана информация, которая будет отображаться, и предоставляется информация о том, как ее интерпретировать.
Таблица 26.41. pg_stat_progress_copy
View
Тип столбца Описание |
---|
Идентификатор процесса бэкенда. |
OID базы данных, к которой подключен этот бэкенд. |
Имя базы данных, к которой подключен этот бэкенд. |
OID таблицы, на которой выполняется команда |
Команда, которая выполняется: |
Тип io, из которого данные считываются или записываются:
|
Количество байт, уже обработанных командой |
Размер исходного файла для команды |
Количество кортежей, уже обработанных командой |
Количество кортежей, не обработанных из-за их исключения в предложении |
26.4.4. Создание индекса Отчет о прогрессе #
Всякий раз, когда выполняется команда CREATE INDEX
или REINDEX
, представление pg_stat_progress_create_index
будет содержать одну строку для каждого бэкенда, который в данный момент создает индексы. Таблицы ниже описывают информацию, которая будет отражена, и предоставляют информацию о том, как ее интерпретировать.
Таблица 26.42. pg_stat_progress_create_index
View
Тип столбца Описание |
---|
Идентификатор процесса бэкенда, создающего индексы. |
OID базы данных, к которой подключен этот бэкенд. |
Имя базы данных, к которой подключен этот бэкенд. |
OID таблицы, на которой создается индекс. |
OID индекса, который создается или переиндексируется. Во время непараллельной команды |
Specific command type: |
Текущая фаза обработки создания индекса. См. Таблица 26.43. |
Общее количество ячеек для ожидания, при необходимости. |
Количество уже ожидавших шкафчиков. |
Идентификатор процесса, ожидающего текущего замка. |
Общее количество блоков, которые будут обработаны в текущей фазе. |
Количество уже обработанных блоков в текущей фазе. |
Общее количество кортежей, которые должны быть обработаны в текущей фазе. |
Количество уже обработанных кортежей в текущей фазе. |
Общее количество секций, на которых должен быть создан или присоединен индекс,
включая как прямые, так и косвенные секции.
|
Количество секций, на которых индекс уже создан
или присоединен, включая как прямые, так и косвенные секции.
|
Таблица 26.43. Создание индекса Phases
Фаза | Описание |
---|---|
initializing |
CREATE INDEX или REINDEX готовится создать индекс. Эта
фаза ожидается очень краткой.
|
waiting for writers before build |
CREATE INDEX CONCURRENTLY или REINDEX CONCURRENTLY ожидает завершения транзакций
с блокировками записи, которые могут потенциально видеть таблицу.
Этап пропускается в режиме непараллельной работы.
Столбцы lockers_total , lockers_done
и current_locker_pid содержат информацию о прогрессе
для этого этапа.
|
building index |
Индекс создается кодом, специфичным для метода доступа. В этой фазе,
методы доступа, поддерживающие отчет о прогрессе, заполняют свои собственные данные о прогрессе,
и подфаза указывается в этом столбце. Обычно,
blocks_total и blocks_done
содержит данные о прогрессе, а также, возможно,
tuples_total и tuples_done .
|
waiting for writers before validation |
CREATE INDEX CONCURRENTLY или REINDEX CONCURRENTLY ожидает завершения транзакций
с блокировками записи, которые могут потенциально записывать в таблицу.
Этап пропускается, когда не в режиме параллельной работы.
Столбцы lockers_total , lockers_done
и current_locker_pid содержат информацию о прогрессе
для этого этапа.
|
index validation: scanning index |
CREATE INDEX CONCURRENTLY сканирует индекс в поисках кортежей, которые нужно проверить.
Этап пропускается, когда не используется режим параллельной работы.
Столбцы blocks_total (установлено в общий размер индекса)
и blocks_done содержат информацию о прогрессе на этом этапе.
|
index validation: sorting tuples |
CREATE INDEX CONCURRENTLY сортирует результаты фазы сканирования индекса.
|
index validation: scanning table |
CREATE INDEX CONCURRENTLY сканирует таблицу
для проверки собранных в предыдущих двух фазах кортежей индекса.
Эта фаза пропускается в непараллельном режиме работы.
Столбцы blocks_total (установлены в общий размер таблицы)
и blocks_done содержат информацию о прогрессе в этой фазе.
|
waiting for old snapshots |
CREATE INDEX CONCURRENTLY или REINDEX CONCURRENTLY ожидает завершения транзакций,
которые могут потенциально видеть таблицу. Этот этап пропускается, когда не используется режим параллельной работы.
Столбцы lockers_total , lockers_done
и current_locker_pid содержат информацию о прогрессе
этого этапа.
|
waiting for readers before marking dead |
REINDEX CONCURRENTLY ожидает завершения транзакций
с блокировками чтения на таблице перед пометкой старого индекса как мертвого.
Этап пропускается в режиме непараллельной работы.
Столбцы lockers_total , lockers_done
и current_locker_pid содержат информацию о прогрессе
этого этапа.
|
waiting for readers before dropping |
REINDEX CONCURRENTLY ожидает завершения транзакций
с блокировками чтения на таблице перед удалением старого индекса.
Этап пропускается, когда не в режиме параллельной работы.
Колонки lockers_total , lockers_done
и current_locker_pid содержат информацию о ходе этого этапа.
|
26.4.5. Отчет о прогрессе VACUUM #
Всякий раз, когда выполняется команда VACUUM
, представление pg_stat_progress_vacuum
будет содержать одну строку для каждого бэкенда (включая рабочие процессы автоматической очистки), который в настоящее время выполняет очистку. Таблицы ниже описывают информацию, которая будет отражена, и предоставляют информацию о том, как ее интерпретировать. Прогресс для команд VACUUM FULL
отображается через pg_stat_progress_cluster
, поскольку и VACUUM FULL
, и CLUSTER
перезаписывают таблицу, в то время как обычный VACUUM
только модифицирует ее на месте. См. Раздел 26.4.2.
Таблица 26.44. pg_stat_progress_vacuum
View
Тип столбца Описание |
---|
Идентификатор процесса бэкенда. |
OID базы данных, к которой подключен этот бэкенд. |
Имя базы данных, к которой подключен этот бэкенд. |
OID таблицы, которая подвергается очистке. |
Текущая фаза обработки очистки. См. Таблица 26.45. |
Общее количество блоков кучи в таблице. Это число отражает состояние на момент начала сканирования; блоки, добавленные позже, не будут (и не должны быть) посещены этой |
Количество просканированных блоков кучи. Поскольку карта видимости используется для оптимизации сканирования, некоторые блоки будут прне указаны без проверки; прне указанные блоки включены в эту общую сумму, так что это число в конечном итоге станет равным |
Количество блоков кучи, просмотренных процессом очисткой. Если у таблицы нет индексов, этот счетчик увеличивается только во время фазы |
Количество завершенных циклов очистки индекса. |
Количество мертвых кортежей, которые можно сохранить, прежде чем потребуется выполнить цикл очистки индекса, основывается на значении параметра maintenance_work_mem. |
Количество удаленных кортежей, собранных с момента последнего цикла очистки индекса. |
Таблица 26.45. Фазы VACUUM
Фаза | Описание |
---|---|
initializing |
VACUUM готовится начать сканирование кучи. Эта
фаза ожидается очень короткой.
|
scanning heap |
VACUUM в настоящее время сканирует кучу. Команда будет отсекать и
дефрагментировать каждую страницу при необходимости и, возможно, выполнять замораживание. Столбец heap_blks_scanned можно использовать
для отслеживания прогресса сканирования.
|
vacuuming indexes |
VACUUM в настоящее время очищает индексы. Если у таблицы есть
какие-либо индексы, это произойдет как минимум один раз во время очистки, после полного сканирования кучи.
Это может произойти несколько раз во время очистки,
если maintenance_work_mem (или, в случае автоочистки,
autovacuum_work_mem, если установлен) недостаточно для хранения
количества найденных мертвых кортежей.
|
vacuuming heap |
VACUUM в настоящее время выполняет очистку кучи. Очистка кучи
отличается от сканирования кучи и выполняется после каждого сканирования
индексов. Если heap_blks_scanned меньше
heap_blks_total , система вернется к сканированию
кучи после завершения этой фазы; в противном случае, она начнет
очистку индексов после завершения этой фазы.
|
cleaning up indexes |
VACUUM в настоящее время выполняет очистку индексов. Это происходит после того, как куча была полностью просканирована и выполнена очистка индексов и кучи.
|
truncating heap |
VACUUM в настоящее время обрезает кучу, чтобы вернуть
пустые страницы в конце отношения операционной системе. Это
происходит после очистки индексов.
|
performing final cleanup |
VACUUM выполняет завершающую очистку. Во время этой фазы,
VACUUM будет очищать карту свободного пространства, обновлять статистику
в pg_class и передавать статистику в накопительную
систему статистики. По завершении этой фазы, VACUUM завершится.
|
26.4.6. Отчет о прогрессе создания базовой резервной копии #
Когда приложение, например pg_basebackup,
делает базовую резервную копию, представление
pg_stat_progress_basebackup
будет содержать строку для каждого процесса отправки WAL, который в настоящее время
выполняет команду репликации BASE_BACKUP
и передает резервную копию. В таблицах ниже описана информация,
которая будет отражаться, и предоставлена информация о том, как ее интерпретировать.
Таблица 26.46. pg_stat_progress_basebackup
View
Тип столбца Описание |
---|
Идентификатор процесса отправителя WAL. |
Текущая фаза обработки. См. Таблица 26.47. |
Общий объем данных, которые будут передаваться потоком. Это приблизительная оценка, которая сообщается в начале фазы |
Количество переданных данных. Этот счетчик увеличивается только в фазе |
Общее количество таблиц, которые будут передаваться потоком. |
Количество передаваемых таблиц пространств. Этот счетчик увеличивается только
когда фаза равна |
Таблица 26.47. Фазы создания базовой резервной копии
Фаза | Описание |
---|---|
initializing | Процесс отправки WAL готовится начать резервное копирование. Этот этап ожидается очень кратким. |
waiting for checkpoint to finish |
Процесс отправки WAL в настоящее время выполняет
pg_backup_start для подготовки
к созданию базовой резервной копии и ожидает завершения
контрольной точки начала резервного копирования.
|
estimating backup size | Процесс отправки WAL в настоящее время оценивает общий объем файлов базы данных, которые будут переданы в качестве базовой резервной копии. |
streaming database files | Процесс отправки WAL в данный момент осуществляет потоковую передачу файлов базы данных в качестве базовой резервной копии. |
waiting for wal archiving to finish |
Процесс отправки WAL в настоящее время выполняет
pg_backup_stop для завершения резервной копии,
и ожидает, чтобы все необходимые для базовой резервной копии
WAL-файлы были успешно заархивированы.
Если в pg_basebackup указано либо
--wal-method=none , либо
--wal-method=stream , резервная копия завершится
после завершения этой фазы.
|
transferring wal files |
Процесс отправки WAL в данный момент передает все журналы WAL,
сгенерированные во время резервного копирования. Эта фаза происходит после
фазы waiting for wal archiving to finish , если
--wal-method=fetch указано в
pg_basebackup. Резервное копирование завершится
после завершения этой фазы.
|