27.4.1. ANALIZAR los informes de progreso
27.4.2. CREAR ÍNDICE Informes de progreso
27.4.3. Informes de progreso de VACUUM
27.4.4. Informes de progreso de CLUSTER
27.4.5. Informes de progreso de la copia de seguridad base

PostgreSQL tiene la capacidad de informar el progreso de ciertos comandos durante la ejecución del comando. Actualmente, los únicos comandos que admiten informes de progreso son ANALYZE, CLUSTER, CREATE INDEX, VACUUM, y BASE_BACKUP (es decir, comando de replicación que pg_basebackup emite para realizar una copia de seguridad base). Esto puede ampliarse en el futuro.

27.4.1. ANALIZAR los informes de progreso

Cuando sea ANALYZE está corriendo, el pg_stat_progress_analyze La vista contendrá una fila para cada backend que esté ejecutando ese comando. Las tablas a continuación describen la información que se reportará y brindan información sobre cómo interpretarla.

Tabla 27.32. pg_stat_progress_analyze Vista

Tipo de columna

Descripción

pidinteger

ID de proceso del backend.

datidoid

OID de la base de datos a la que está conectado este backend.

datnamename

Nombre de la base de datos a la que está conectado este backend.

relidoid

OID de la tabla que se analiza.

phasetext

Fase de procesamiento actual. Consulte la Tabla 27.33.

sample_blks_totalbigint

Número total de bloques de montón que se muestrearán.

sample_blks_scannedbigint

Número de bloques de montón analizados.

ext_stats_totalbigint

Número de estadísticas ampliadas.

ext_stats_computedbigint

Número de estadísticas extendidas calculadas. Este contador solo avanza cuando la fase es computing extended statistics.

child_tables_totalbigint

Número de tablas secundarias.

child_tables_donebigint

Número de tablas secundarias escaneadas. Este contador solo avanza cuando la fase es acquiring inherited sample rows.

current_child_table_relidoid

OID de la tabla secundaria que se está escaneando actualmente. Este campo solo es válido cuando la fase es acquiring inherited sample rows.

Tabla 27.33. ANALIZAR fases

Fase Descripción
initializing El comando se está preparando para comenzar a escanear el montón. Se espera que esta fase sea muy breve.
acquiring sample rows El comando actualmente está escaneando la tabla dada por relid para obtener filas de muestra.
acquiring inherited sample rows El comando actualmente está escaneando tablas secundarias para obtener filas de muestra. Columnas child_tables_total, child_tables_done, y current_child_table_relid contienen la información de progreso para esta fase.
computing statistics El comando calcula estadísticas de las filas de muestra obtenidas durante la exploración de la tabla.
computing extended statistics El comando calcula estadísticas extendidas a partir de las filas de muestra obtenidas durante la exploración de la tabla.
finalizing analyze El comando se está actualizando pg_class. Cuando se complete esta fase, ANALYZE terminará.

Nota

Tenga en cuenta que cuando ANALYZE se ejecuta en una tabla particionada, todas sus particiones también se analizan de forma recursiva como también se menciona en ANALYZE. En ese caso, ANALYZE El progreso se informa primero para la tabla principal, por lo que se recopilan sus estadísticas de herencia, seguidas de las de cada partición.

27.4.2. CREAR ÍNDICE Informes de progreso

Cuando sea CREATE INDEX o REINDEX está corriendo, el pg_stat_progress_create_index La vista contendrá una fila para cada backend que actualmente esté creando índices. Las tablas a continuación describen la información que se reportará y brindan información sobre cómo interpretarla.

Tabla 27.34. pg_stat_progress_create_index Vista

Tipo de columna

Descripción

pidinteger

ID de proceso del backend.

datidoid

OID de la base de datos a la que está conectado este backend.

datnamename

Nombre de la base de datos a la que está conectado este backend.

relidoid

OID de la tabla en la que se está creando el índice.

index_relidoid

OID del índice que se está creando o reindexando. Durante una no concurrente CREATE INDEX, esto es 0.

commandtext

El comando que se está ejecutando: CREATE INDEX, CREATE INDEX CONCURRENTLY, REINDEX, o REINDEX CONCURRENTLY.

phasetext

Fase de procesamiento actual de la creación del índice. Consulte la Tabla 27.35.

lockers_totalbigint

Número total de casilleros a esperar, cuando corresponda.

lockers_donebigint

Número de casilleros ya esperados.

current_locker_pidbigint

ID de proceso del casillero que se está esperando actualmente.

blocks_totalbigint

Número total de bloques a procesar en la fase actual.

blocks_donebigint

Número de bloques ya procesados ​​en la fase actual.

tuples_totalbigint

Número total de tuplas que se procesarán en la fase actual.

tuples_donebigint

Número de tuplas ya procesadas en la fase actual.

partitions_totalbigint

Al crear un índice en una tabla particionada, esta columna se establece en el número total de particiones en las que se creará el índice.

partitions_donebigint

Al crear un índice en una tabla particionada, esta columna se establece en el número de particiones en las que se completó el índice.

Tabla 27.35. CREAR Fases de ÍNDICE

Fase Descripción
initializing CREATE INDEX o REINDEX se está preparando para crear el índice. Se espera que esta fase sea muy breve.
waiting for writers before build CREATE INDEX CONCURRENTLY o REINDEX CONCURRENTLY está esperando transacciones con bloqueos de escritura que potencialmente pueden ver la tabla para finalizar. Esta fase se omite cuando no está en modo concurrente. Columnas lockers_total, lockers_done y current_locker_pid contienen la información de progreso para esta fase.
building index El índice se construye mediante el código específico del método de acceso. En esta fase, los métodos de acceso que respaldan los informes de progreso completan sus propios datos de progreso, y la subfase se indica en esta columna. Típicamente, blocks_total y blocks_done contendrá datos de progreso, así como potencialmente tuples_total y tuples_done.
waiting for writers before validation CREATE INDEX CONCURRENTLY o REINDEX CONCURRENTLY está esperando que finalicen las transacciones con bloqueos de escritura que potencialmente pueden escribir en la tabla. Esta fase se omite cuando no está en modo concurrente. Columnas lockers_total, lockers_done y current_locker_pid contienen la información de progreso para esta fase.
index validation: scanning index CREATE INDEX CONCURRENTLY está escaneando el índice en busca de tuplas que deban validarse. Esta fase se omite cuando no está en modo concurrente. Columnas blocks_total (establecido en el tamaño total del índice) y blocks_done contienen la información de progreso para esta fase.
index validation: sorting tuples CREATE INDEX CONCURRENTLY está clasificando la salida de la fase de escaneo de índices.
index validation: scanning table CREATE INDEX CONCURRENTLY está escaneando la tabla para validar las tuplas de índice recopiladas en las dos fases anteriores. Esta fase se omite cuando no está en modo concurrente. Columnas blocks_total (ajustado al tamaño total de la mesa) y blocks_done contienen la información de progreso para esta fase.
waiting for old snapshots CREATE INDEX CONCURRENTLY o REINDEX CONCURRENTLY está esperando transacciones que potencialmente pueden ver la tabla para publicar sus instantáneas. Esta fase se omite cuando no está en modo concurrente. Columnas lockers_total, lockers_done y current_locker_pid contienen la información de progreso para esta fase.
waiting for readers before marking dead REINDEX CONCURRENTLY está esperando que finalicen las transacciones con bloqueos de lectura en la mesa, antes de marcar el índice antiguo como muerto. Esta fase se omite cuando no está en modo concurrente. Columnas lockers_total, lockers_done y current_locker_pid contienen la información de progreso para esta fase.
waiting for readers before dropping REINDEX CONCURRENTLY está esperando que finalicen las transacciones con bloqueos de lectura en la mesa, antes de eliminar el índice anterior. Esta fase se omite cuando no está en modo concurrente. Columnas lockers_total, lockers_done y current_locker_pid contienen la información de progreso para esta fase.

27.4.3. Informes de progreso de VACUUM

Cuando sea VACUUM está corriendo, el pg_stat_progress_vacuum La vista contendrá una fila para cada backend (incluidos los procesos de trabajo de autovacío) que actualmente está aspirando. Las tablas a continuación describen la información que se reportará y brindan información sobre cómo interpretarla. Progreso para VACUUM FULL los comandos se informa a través de pg_stat_progress_cluster porque ambos VACUUM FULL y CLUSTER reescribe la tabla, mientras que regular VACUUM solo lo modifica en su lugar. Consulte la Sección 27.4.4.

Tabla 27.36. pg_stat_progress_vacuum Vista

Tipo de columna

Descripción

pidinteger

ID de proceso del backend.

datidoid

OID de la base de datos a la que está conectado este backend.

datnamename

Nombre de la base de datos a la que está conectado este backend.

relidoid

OID de la mesa que se está aspirando.

phasetext

Fase de procesamiento actual del vacío. Consulte la Tabla 27.37.

heap_blks_totalbigint

Número total de bloques de pila en la tabla. Este número se informa al comienzo del escaneo; Los bloques agregados más tarde no serán (y no necesitan ser) visitados por este VACUUM.

heap_blks_scannedbigint

Número de bloques de montón analizados. Debido a que el mapa de visibilidad se utiliza para optimizar los escaneos, algunos bloques se omitirán sin inspección; Los bloques omitidos se incluyen en este total, por lo que este número eventualmente será igual a heap_blks_total cuando el vacío es completo. Este contador solo avanza cuando la fase es scanning heap.

heap_blks_vacuumedbigint

Número de bloques de pila aspirados. A menos que la tabla no tenga índices, este contador solo avanza cuando la fase es vacuuming heap. Los bloques que no contienen tuplas muertas se omiten, por lo que el contador a veces puede avanzar en grandes incrementos.

index_vacuum_countbigint

Número de ciclos de vacío de índice completados.

max_dead_tuplesbigint

Número de tuplas muertas que podemos almacenar antes de tener que realizar un ciclo de vacío de índice, basado en maintenance_work_mem.

num_dead_tuplesbigint

Número de tuplas muertas recopiladas desde el último ciclo de vacío de índice.

Tabla 27.37. Fases VACÍO

Fase Descripción
initializing VACUUM se está preparando para comenzar a escanear el montón. Se espera que esta fase sea muy breve.
scanning heap VACUUM actualmente está escaneando el montón. Podará y desfragmentará cada página si es necesario, y posiblemente realizará una actividad de congelación. los heap_blks_scanned La columna se puede usar para monitorear el progreso del escaneo.
vacuuming indexes VACUUM actualmente está aspirando los índices. Si una tabla tiene índices, esto sucederá al menos una vez por vacío, después de que el montón se haya escaneado por completo. Puede suceder varias veces por vacío si maintenance_work_mem no es suficiente para almacenar el número de tuplas muertas encontradas.
vacuuming heap VACUUM actualmente está aspirando el montón. Aspirar el montón es distinto de escanear el montón y ocurre después de cada instancia de índices de aspiración. Si heap_blks_scanned es menos que heap_blks_total, el sistema volverá a escanear el montón después de que se complete esta fase; de lo contrario, comenzará a limpiar los índices después de que se complete esta fase.
cleaning up indexes VACUUM actualmente está limpiando índices. Esto ocurre después de que el montón se haya escaneado por completo y se haya completado todo el vaciado de los índices y el montón.
truncating heap VACUUM actualmente está truncando el montón para devolver páginas vacías al final de la relación con el sistema operativo. Esto ocurre después de limpiar índices.
performing final cleanup VACUUM está realizando la limpieza final. Durante esta fase, VACUUM aspirará el mapa de espacio libre, actualizará las estadísticas en pg_classe informar estadísticas al recopilador de estadísticas. Cuando se complete esta fase, VACUUM terminará.

27.4.4. Progreso del CLUSTER Reportando

Cuando sea CLUSTER o VACUUM FULL está corriendo, el pg_stat_progress_cluster La vista contendrá una fila para cada backend que actualmente esté ejecutando cualquiera de los comandos. Las tablas a continuación describen la información que se reportará y brindan información sobre cómo interpretarla.

Tabla 27.38. pg_stat_progress_cluster Vista

Tipo de columna

Descripción

pidinteger

ID de proceso del backend.

datidoid

OID de la base de datos a la que está conectado este backend.

datnamename

Nombre de la base de datos a la que está conectado este backend.

relidoid

OID de la tabla que se está agrupando.

commandtext

El comando que se está ejecutando. Cualquiera CLUSTER o VACUUM FULL.

phasetext

Fase de procesamiento actual. Consulte la Tabla 27.39.

cluster_index_relidoid

Si la tabla se escanea usando un índice, este es el OID del índice que se está usando; de lo contrario, es cero.

heap_tuples_scannedbigint

Número de tuplas de montón analizadas. Este contador solo avanza cuando la fase es seq scanning heap, index scanning heap o writing new heap.

heap_tuples_writtenbigint

Número de tuplas de montón escritas. Este contador solo avanza cuando la fase es seq scanning heap, index scanning heap o writing new heap.

heap_blks_totalbigint

Número total de bloques de pila en la tabla. Este número se informa a principios de seq scanning heap.

heap_blks_scannedbigint

Número de bloques de montón analizados. Este contador solo avanza cuando la fase es seq scanning heap.

index_rebuild_countbigint

Número de índices reconstruidos. Este contador solo avanza cuando la fase es rebuilding index.

Tabla 27.39. Fases CLUSTER y VACUUM FULL

Fase Descripción
initializing El comando se está preparando para comenzar a escanear el montón. Se espera que esta fase sea muy breve.
seq scanning heap El comando actualmente está escaneando la tabla usando un escaneo secuencial.
index scanning heap CLUSTER actualmente está escaneando la tabla usando un escaneo de índice.
sorting tuples CLUSTER actualmente está ordenando tuplas.
writing new heap CLUSTER actualmente está escribiendo el nuevo montón.
swapping relation files Actualmente, el comando está intercambiando archivos recién construidos en su lugar.
rebuilding index Actualmente, el comando está reconstruyendo un índice.
performing final cleanup El comando está realizando una limpieza final. Cuando se complete esta fase, CLUSTER o VACUUM FULL terminará.

27.4.5. Informes de progreso de la copia de seguridad base

Siempre que una aplicación como pg_basebackup esté realizando una copia de seguridad base, pg_stat_progress_basebackup La vista contendrá una fila para cada proceso de remitente de WAL que esté ejecutando actualmente el BASE_BACKUP comando de replicación y transmisión de la copia de seguridad. Las tablas a continuación describen la información que se reportará y brindan información sobre cómo interpretarla.

Cuadro 27.40. pg_stat_progress_basebackup Vista

Tipo de columna

Descripción

pidinteger

ID de proceso de un proceso de remitente WAL.

phasetext

Fase de procesamiento actual. Consulte la Tabla 27.41.

backup_totalbigint

Cantidad total de datos que se transmitirán. Esto se estima y se informa a principios de streaming database files fase. Tenga en cuenta que esto es solo una aproximación, ya que la base de datos puede cambiar durante streaming database files La fase y el registro WAL pueden incluirse en la copia de seguridad más adelante. Este es siempre el mismo valor que backup_streamed una vez que la cantidad de datos transmitidos excede el tamaño total estimado. Si la estimación está deshabilitada en pg_basebackup (es decir, --no-estimate-size se especifica la opción), esto es NULL.

backup_streamedbigint

Cantidad de datos transmitidos. Este contador solo avanza cuando la fase es streaming database files o transferring wal files.

tablespaces_totalbigint

Número total de espacios de tabla que se transmitirán.

tablespaces_streamedbigint

Número de espacios de tabla transmitidos. Este contador solo avanza cuando la fase es streaming database files.

Cuadro 27.41. Fases de respaldo base

Fase Descripción
initializing El proceso del remitente de WAL se está preparando para comenzar la copia de seguridad. Se espera que esta fase sea muy breve.
waiting for checkpoint to finish El proceso del remitente de WAL se está realizando actualmente pg_start_backup para prepararse para realizar una copia de seguridad base y esperar a que finalice el punto de control de inicio de la copia de seguridad.
estimating backup size El proceso del remitente de WAL está estimando actualmente la cantidad total de archivos de base de datos que se transmitirán como copia de seguridad base.
streaming database files El proceso del remitente de WAL actualmente está transmitiendo archivos de base de datos como copia de seguridad base.
waiting for wal archiving to finish El proceso del remitente de WAL se está realizando actualmente pg_stop_backup para finalizar la copia de seguridad y esperar a que todos los archivos WAL necesarios para que la copia de seguridad base se archive correctamente. Si alguno --wal-method=none o --wal-method=stream se especifica en pg_basebackup, la copia de seguridad finalizará cuando se complete esta fase.
transferring wal files El proceso del remitente de WAL está transfiriendo actualmente todos los registros de WAL generados durante la copia de seguridad. Esta fase ocurre después waiting for wal archiving to finish fase si --wal-method=fetch se especifica en pg_basebackup. La copia de seguridad finalizará cuando se complete esta fase.
Anterior Hasta próximo
27.3. Visualización de bloqueos Hogar 27,5. Seguimiento dinámico