Todos los productos
Search
Centro de documentos

Hologres:Manage refresh tasks

Última actualización: Sep 05, 2026

Las tablas dinámicas ejecutan tareas de actualización en segundo plano según la hora de inicio y el intervalo configurados. Cuando la tabla base cambia, la tabla dinámica se actualiza para reflejar los datos más recientes. Este tema explica cómo monitorear, consultar y gestionar dichas tareas de actualización.

Métricas de monitoreo

A partir de Hologres V4.0.8, hay cuatro métricas disponibles para las tareas de actualización de tablas dinámicas. Configure los umbrales de alerta en CloudMonitor según sus necesidades. Para obtener más información, consulte CloudMonitor.

QPS de fallos de actualización a nivel de instancia

Nombre de la métrica: Dynamic Table Refresh Failed QPS Unidad: count/s (consultas por segundo)

Esta métrica muestra la tasa de fallos de las tareas de actualización en todas las tablas dinámicas de una instancia. En condiciones normales, el valor se mantiene cercano a cero.

Si este valor es distinto de cero de forma constante o va en aumento, vaya a HoloWeb para solucionar el problema.

Latencia de datos

Nombre de la métrica: Dynamic Table Lag Unidad: s (segundos)

Esta métrica indica el retraso de cada tabla dinámica respecto a su tabla base o a un momento específico. Refleja la actualidad de los datos.

Si la latencia aumenta continuamente:

Causa posible

Siguiente paso

Las tareas de actualización fallan repetidamente o la actualización automática está en pausa

Vaya a la consola de HoloWeb y compruebe el estado de la tarea

Ha cambiado un gran volumen de datos ascendentes y los recursos de la instancia son insuficientes para procesarlos

Revise las métricas de monitoreo de Hologres, como la duración de la actualización, para investigar cuellos de botella de recursos

Duración de la tarea de actualización

Nombre de la métrica: Dynamic Table Refresh Duration Unidad: ms (milisegundos)

Esta métrica muestra cuánto tiempo lleva ejecutándose la tarea de actualización actual de cada tabla dinámica. Úsela para detectar si el ciclo de actualización se está alargando.

Si el valor aumenta repentinamente o se mantiene muy por encima de su promedio histórico:

Possible cause

Next step

Cuello de botella de recursos

Compruebe las métricas de CPU, memoria y almacenamiento de la instancia

Aumento del volumen de datos ascendentes

Consulte hologres.hg_dynamic_table_refresh_history para comparar la duración actual con los valores históricos de referencia

QPM de fallos de actualización por tabla

Nombre de la métrica: Dynamic Table Refresh Failed QPM Unidad: count/m (conteos por minuto)

Esta métrica muestra el número de tareas de actualización fallidas por minuto para cada tabla dinámica. En condiciones normales, el valor es cero.

Interpretación de esta métrica:

Observed pattern

Meaning

Action

Picos ocasionales; las actualizaciones posteriores son exitosas

Presión transitoria del sistema o actualización de la instancia

No se requiere ninguna acción

El valor se mantiene por encima de cero de forma persistente para una tabla específica

Fallo persistente de actualización

Consulte hologres.hg_dynamic_table_refresh_log('<table_name>') para obtener los detalles del error de la tarea fallida y resuelva el problema subyacente. Para obtener instrucciones, consulte Consulta de tareas de actualización en ejecución.

Consulta de tareas de actualización

Consulta de tareas de actualización en ejecución

Mediante hologres.hg_dynamic_table_refresh_activity

La tabla del sistema hologres.hg_dynamic_table_refresh_activity muestra las tareas de actualización en ejecución —tanto completas como incrementales— junto con su consumo de recursos. Para ver la descripción de los campos, consulte hologres.hg_dynamic_table_refresh_activity.

Esta tabla del sistema solo es compatible con Hologres V3.0, y V4.0.8 y versiones posteriores.
-- View currently running refresh tasks
SELECT
    pid,
    query_id,
    refresh_mode,
    'RUNNING' AS status,
    refresh_start,
    extract(epoch FROM duration) AS duration,                            -- milliseconds
    serverless_queue_time_ms::bigint / 1000 AS serverless_queue_time_sec,
    serverless_resource_used_time_ms::bigint / 1000 AS serverless_resource_used_time_sec,
    serverless_allocated_cores
FROM hologres.hg_dynamic_table_refresh_activity
WHERE datname = '${database}'
  AND table_write = quote_ident('${schema}') || '.' || quote_ident('${tableName}')
ORDER BY refresh_start DESC
LIMIT 2000;

Mediante hg_stat_activity

La vista del sistema hg_stat_activity también muestra las tareas de actualización en ejecución. La visualización varía según el modo de actualización:

  • Actualización completa: Aparece una sentencia INSERT.

  • Actualización incremental: Aparece una tarea de Refresh.

Mediante hologres.hg_dynamic_table_refresh_log

Para las tablas dinámicas creadas con la sintaxis 3.1, hologres.hg_dynamic_table_refresh_log proporciona una vista por tabla de los registros de tareas de actualización. El siguiente ejemplo consulta todas las tareas de actualización que se están ejecutando actualmente para una tabla específica:

-- View running refresh tasks for a specific table (3.1 syntax)
SELECT query_job_id, status
FROM hologres.hg_dynamic_table_refresh_log('<dynamic_table_name>')
WHERE status = 'RUNNING';
Nota

hologres.hg_dynamic_table_refresh_log solo es compatible con tablas dinámicas creadas con la sintaxis 3.1. Para las tablas dinámicas creadas con la sintaxis 3.0, utilice hologres.hg_dynamic_table_refresh_activity o hg_stat_activity.

El valor query_job_id que devuelve esta vista también se utiliza al cancelar una tarea de actualización en ejecución. Para obtener más información, consulte Tablas dinámicas creadas con la nueva sintaxis 3.1.

Mediante métricas de monitoreo

Compruebe métricas como QPS, RPS (registros por segundo) y latencia para confirmar el estado de ejecución. Un Command Type con valor refresh indica una tarea de actualización de tabla dinámica. Para obtener más información, consulte Monitoring metrics.

Si la tarea de actualización se ejecuta en recursos de Serverless Computing, también puede comprobar su estado en las métricas de Serverless Computing.

Consulta de tareas de actualización históricas

Mediante hologres.hg_dynamic_table_refresh_history

La tabla del sistema hologres.hg_dynamic_table_refresh_history registra el historial de todas las tareas de actualización —completas, incrementales y manuales— del último mes. Para ver la descripción de los campos, consulte hologres.hg_dynamic_table_refresh_history.

Los registros se conservan durante un mes. No es posible consultar datos con antigüedad superior a un mes.
Los propietarios de tablas solo pueden ver su propio historial de actualizaciones. Los usuarios con el rol de superusuario pueden ver todos los registros de actualización.

Ejemplo 1: Consulta de tareas de actualización incremental del último día

SELECT
    query_id,
    refresh_mode,
    status,
    refresh_start,
    duration,
    refresh_latency / 1000 AS refresh_latency_second,
    serverless_allocated_cores,
    queue_time_ms::bigint / 1000 AS queue_time_second,
    serverless_resource_used_time_ms::bigint / 1000 AS serverless_resource_used_time_second
FROM hologres.hg_dynamic_table_refresh_history
WHERE refresh_start >= CURRENT_DATE - INTERVAL '1 day'
  AND dynamic_table_name = '<dynamic_table>'
  AND refresh_mode = 'incremental'
ORDER BY refresh_start DESC
LIMIT 100;

Ejemplo 2: Consulta de todas las tareas de actualización de la instancia del último día

SELECT
    query_id,
    refresh_mode,
    status,
    refresh_start,
    duration,
    refresh_latency / 1000 AS refresh_latency_second,
    serverless_allocated_cores,
    queue_time_ms::bigint / 1000 AS queue_time_second,
    serverless_resource_used_time_ms::bigint / 1000 AS serverless_resource_used_time_second
FROM hologres.hg_dynamic_table_refresh_history
WHERE refresh_start >= CURRENT_DATE - INTERVAL '1 day';

Ejemplo 3: Consulta de tareas de actualización de una tabla específica del último día

SELECT
    query_id,
    refresh_mode,
    status,
    refresh_start,
    duration,
    refresh_latency / 1000 AS refresh_latency_second,
    serverless_allocated_cores,
    queue_time_ms::bigint / 1000 AS queue_time_second,
    serverless_resource_used_time_ms::bigint / 1000 AS serverless_resource_used_time_second
FROM hologres.hg_dynamic_table_refresh_history
WHERE schema_name = '<schema_name>'
  AND dynamic_table_name = '<dynamic_table>'
  AND refresh_start >= CURRENT_DATE - INTERVAL '1 day';
Para las tablas dinámicas de actualización completa creadas con la sintaxis heredada 3.0, hologres.hg_dynamic_table_refresh_history podría no reflejar con precisión el estado de éxito o fallo; una actualización fallida podría aparecer como Success . Para obtener el historial real de actualizaciones de estas tablas: 1. Obtenga el valor de cron_job_name desde hologres.hg_dynamic_table_properties . 2. Consulte los registros de ejecución del trabajo programado (cron) mediante ese nombre.
-- Step 1: Get the cron_job_name
SELECT property_value AS cron_job_name
FROM hologres.hg_dynamic_table_properties
WHERE dynamic_table_name = '<dt_name>'
  AND property_key = 'cron_job_name';

-- Step 2: Query cron job execution records
SELECT *
FROM hologres.hg_user_cron_tasks
WHERE jobname = '<cron_job_name>'
ORDER BY start_time DESC;

Mediante registros de consultas lentas

Las tareas de actualización también aparecen en los registros de consultas lentas con Command Type establecido en refresh. Para obtener más información, consulte Get and analyze slow query logs.

Consulta del plan de ejecución de una tarea de actualización

Utilice EXPLAIN and EXPLAIN ANALYZE en una sentencia de actualización para ver su plan de ejecución e identificar cuellos de botella de rendimiento, del mismo modo que lo haría con una consulta normal.

EXPLAIN REFRESH DYNAMIC TABLE hmtest.dt_order_lineitem;

Salida de ejemplo:

                                                                                              QUERY PLAN
-------------------------------------------------------------------------------------------------------------
 Gather  (cost=0.00..10.13 rows=1 width=16)
   ->  Insert  (cost=0.00..10.13 rows=1 width=16)
         ->  Redistribution  (cost=0.00..10.11 rows=1 width=16)
               ->  Final HashAggregate  (cost=0.00..10.11 rows=1 width=16)
                     Group Key: orders.o_orderpriority
                     ->  Redistribution  (cost=0.00..10.11 rows=10 width=16)
                           Hash Key: orders.o_orderpriority
                           ->  Partial HashAggregate  (cost=0.00..10.11 rows=10 width=16)
                                 Group Key: orders.o_orderpriority
                                 ->  Hash Left Semi Join  (cost=0.00..10.11 rows=1000 width=8)
                                       Hash Cond: (orders.o_orderkey = lineitem.l_orderkey)
                                       ->  Redistribution  (cost=0.00..5.03 rows=1000 width=16)
                                             Hash Key: orders.o_orderkey
                                             ->  Local Gather  (cost=0.00..5.01 rows=1000 width=16)
                                                   ->  Seq Scan on orders  (cost=0.00..5.01 rows=1000 width=16)
                                                         Filter: ((o_orderdate >= '1996-07-01 00:00:00+08'::timestamp with time zone) AND (o_orderdate < '1996-10-01 00:00:00+08'::timestamp with time zone))
                                       ->  Hash  (cost=5.03..5.03 rows=1000 width=8)
                                             ->  Redistribution  (cost=0.00..5.03 rows=1000 width=8)
                                                   Hash Key: lineitem.l_orderkey
                                                   ->  Local Gather  (cost=0.00..5.03 rows=1000 width=8)
                                                         ->  Seq Scan on lineitem  (cost=0.00..5.03 rows=1000 width=8)
                                                               Filter: (l_commitdate < l_receiptdate)
 Optimizer: HQO version 2.1.0
(23 rows)

Configuración del tiempo de espera de actualización

Establezca un tiempo de espera para evitar que las tareas de actualización de larga duración bloqueen recursos. Hologres admite tres niveles de configuración de tiempo de espera.

Tiempo de espera a nivel de tabla

Configure un tiempo de espera a nivel de tabla al crear la tabla dinámica. Este se aplica a todas las tareas de actualización de dicha tabla. El siguiente ejemplo utiliza el conjunto de datos público tpch_10g. Antes de ejecutar el código, importe el conjunto de datos. Para obtener más información, consulte Create a public dataset import task.

-- Set a 30-minute timeout for all refresh tasks on this table
CREATE DYNAMIC TABLE tpch_q1_batch
WITH (
    refresh_mode = 'full',
    auto_refresh_enable = 'true',
    full_auto_refresh_interval = '1 hours',
    refresh_guc_statement_timeout = '30 min'
)
AS
SELECT
    l_returnflag,
    l_linestatus,
    SUM(l_quantity) AS sum_qty,
    SUM(l_extendedprice) AS sum_base_price,
    SUM(l_extendedprice * (1 - l_discount)) AS sum_disc_price,
    SUM(l_extendedprice * (1 - l_discount) * (1 + l_tax)) AS sum_charge,
    AVG(l_quantity) AS avg_qty,
    AVG(l_extendedprice) AS avg_price,
    AVG(l_discount) AS avg_disc,
    COUNT(*) AS count_order
FROM hologres_dataset_tpch_10.lineitem
WHERE l_shipdate <= DATE '1998-12-01' - INTERVAL '120' DAY
GROUP BY l_returnflag, l_linestatus;

Tiempo de espera a nivel de sesión

Para una actualización manual, configure el tiempo de espera mediante un parámetro GUC (Grand Unified Configuration) a nivel de sesión:

SET statement_timeout = <time>;
REFRESH DYNAMIC TABLE <dynamic_schema_name.dynamic_table_name>;

Para obtener más información sobre la configuración de tiempos de espera, consulte Modify active query timeout.

Tiempo de espera por actualización

Anule el tiempo de espera para una única actualización manual mediante refresh ... WITH (refresh_guc_statement_timeout = '...'):

REFRESH DYNAMIC TABLE <schema_name.table_name> WITH (
    refresh_guc_statement_timeout = '30 min'
);

Activación de una actualización manual

Ejecute la siguiente sentencia para activar una actualización inmediata:

REFRESH DYNAMIC TABLE <schema_name.table_name>;
Si la actualización automática está habilitada, la actualización manual se ejecuta en paralelo con la tarea de actualización automática programada. Ambas se completan con normalidad. El sistema conserva solo una copia de los datos más recientes.

Cancelación de una tarea de actualización

Tablas dinámicas creadas con la nueva sintaxis 3.1

Cancelación de una tarea de actualización en ejecución

Consulte el query_job_id de la tarea en ejecución desde hologres.hg_dynamic_table_refresh_log y, a continuación, cancélela mediante hologres.hg_internal_cancel_query_job.

-- Step 1: Get the query_job_id
SELECT query_job_id
FROM hologres.hg_dynamic_table_refresh_log('<dt_name>')
WHERE status = 'RUNNING';

-- Step 2: Cancel the task
SELECT hologres.hg_internal_cancel_query_job('<query_job_id>');
Solo un superusuario puede cancelar una tarea de actualización mediante hologres.hg_internal_cancel_query_job .

Pausa de la actualización automática de una tabla

Para detener todas las tareas de actualización subsiguientes a nivel de tabla, deshabilite la actualización automática:

ALTER DYNAMIC TABLE [IF EXISTS] [<schema>.]<table_name> SET (auto_refresh_enable = false);
Importante

Esta operación detiene todas las tareas de actualización futuras de la tabla. Los datos de la tabla dinámica no se actualizarán hasta que se vuelva a habilitar la actualización automática. Para volver a habilitarla, consulte ALTER DYNAMIC TABLE.

Tablas dinámicas creadas con la sintaxis 3.0

Cancelación de una tarea de actualización en ejecución

Si una tarea de actualización tarda demasiado o parece estar atascada, cancélela mediante pg_cancel_backend.

-- Cancel the refresh task by its process ID (pid)
SELECT pg_cancel_backend(<pid>);

Obtenga el pid desde hologres.hg_dynamic_table_refresh_activity o hg_stat_activity. Para obtener más información, consulte View refresh tasks

Para cancelar tareas de actualización en lotes, utilice el mismo método que para las consultas normales. Para obtener más información, consulte Terminate a query .

Pausa de la actualización automática de una tabla

Para detener todas las tareas de actualización subsiguientes a nivel de tabla:

ALTER DYNAMIC TABLE [IF EXISTS] [<schema>.]<table_name> SET (auto_refresh_enable = false);
Importante

Esta operación detiene todas las tareas de actualización futuras de la tabla. Los datos de la tabla dinámica no se actualizarán hasta que se vuelva a habilitar la actualización automática. Para volver a habilitarla, consulte ALTER DYNAMIC TABLE.