Todos os produtos
Search
Central de documentação

Hologres:Gerencie tarefas de atualização

Última atualização: Jul 28, 2026

As tabelas dinâmicas executam tarefas de atualização em segundo plano com base no horário de início e no intervalo configurados. Quando a tabela base sofre alterações, a tabela dinâmica é atualizada para refletir os dados mais recentes. Este tópico explica como monitorar, visualizar e gerenciar essas tarefas de atualização.

Métricas de monitoramento

A partir do Hologres V4.0.8, as quatro métricas a seguir estão disponíveis para tarefas de atualização de tabelas dinâmicas. Configure os limiares de alerta no CloudMonitor conforme suas necessidades. Para obter mais informações, consulte CloudMonitor.

QPS de falha de atualização no nível da instância

Nome da métrica: Dynamic Table Refresh Failed QPS Unidade: contagem/s (consultas por segundo)

Esta métrica indica a taxa de falhas das tarefas de atualização em todas as tabelas dinâmicas de uma instância. Em condições normais, o valor permanece próximo de zero.

Caso esse valor seja consistentemente diferente de zero ou esteja aumentando, acesse o HoloWeb para solucionar o problema.

Latência de dados

Nome da métrica: Dynamic Table Lag Unidade: s (segundos)

Essa métrica mostra o atraso de cada tabela dinâmica em relação à sua tabela base ou a um ponto específico no tempo, refletindo a atualidade dos dados.

Se a latência continuar aumentando:

Possível causa

Próxima etapa

Falhas recorrentes nas tarefas de atualização ou pausa na atualização automática

Acesse o console do HoloWeb e verifique o status da tarefa

Grande volume de alterações nos dados upstream e recursos insuficientes na instância para acompanhar

Revise as métricas de monitoramento do Hologres, como a duração da atualização, para investigar gargalos de recursos

Duração da tarefa de atualização

Nome da métrica: Dynamic Table Refresh Duration Unidade: ms (milissegundos)

Esta métrica indica há quanto tempo a tarefa de atualização atual de cada tabela dinâmica está em execução. Utilize-a para detectar se o ciclo de atualização está ficando mais longo.

Se o valor aumentar repentinamente ou permanecer significativamente acima da média histórica:

Possível causa

Próxima etapa

Gargalo de recursos

Verifique as métricas de CPU, memória e armazenamento da instância

Aumento no volume de dados upstream

Consulte hologres.hg_dynamic_table_refresh_history para comparar a duração atual com as linhas de base históricas

QPM de falha de atualização por tabela

Nome da métrica: Dynamic Table Refresh Failed QPM Unidade: contagem/m (contagens por minuto)

Essa métrica exibe o número de tarefas de atualização com falha por minuto para cada tabela dinâmica. Em condições normais, o valor é zero.

Interpretação desta métrica:

Padrão observado

Significado

Ação

Picos ocasionais, com atualizações subsequentes bem-sucedidas

Pressão transitória no sistema ou atualização da instância

Nenhuma ação necessária

Valor persistentemente acima de zero para uma tabela específica

Falha persistente na atualização

Execute uma consulta em hologres.hg_dynamic_table_refresh_log('<table_name>') para obter os detalhes do erro da tarefa com falha e resolva a causa raiz. Para obter instruções, consulte Visualizar tarefas de atualização em execução.

Visualizar tarefas de atualização

Visualizar tarefas de atualização em execução

Usando hologres.hg_dynamic_table_refresh_activity

A tabela de sistema hologres.hg_dynamic_table_refresh_activity exibe as tarefas de atualização em execução — incluindo atualizações completas e incrementais — juntamente com o consumo de recursos. Para descrições dos campos, consulte hologres.hg_dynamic_table_refresh_activity.

Esta tabela de sistema é suportada apenas no Hologres V3.0 e na V4.0.8 ou superior.
-- 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;

Usando hg_stat_activity

A view de sistema hg_stat_activity também mostra as tarefas de atualização em execução. A exibição varia conforme o modo de atualização:

  • Atualização completa: Uma instrução INSERT é exibida.

  • Atualização incremental: Uma tarefa de Refresh é exibida.

Usando hologres.hg_dynamic_table_refresh_log

Para tabelas dinâmicas criadas com a sintaxe 3.1, a função hologres.hg_dynamic_table_refresh_log fornece uma visualização dos logs de tarefas de atualização por tabela. O exemplo a seguir consulta todas as tarefas de atualização em execução no momento para uma tabela 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

A função hologres.hg_dynamic_table_refresh_log é suportada apenas para tabelas dinâmicas criadas com a sintaxe 3.1. Para tabelas dinâmicas criadas com a sintaxe 3.0, utilize hologres.hg_dynamic_table_refresh_activity ou hg_stat_activity.

O query_job_id retornado por esta view também é utilizado ao cancelar uma tarefa de atualização em execução. Para obter mais informações, consulte Tabelas dinâmicas criadas com a nova sintaxe 3.1.

Usando métricas de monitoramento

Verifique métricas como QPS, RPS (registros por segundo) e latência para confirmar o status de execução. Um Command Type definido como refresh indica uma tarefa de atualização de tabela dinâmica. Para obter mais informações, consulte Monitoring metrics.

Se a tarefa de atualização for executada em recursos de Serverless Computing, você também poderá verificar seu status nas métricas do Serverless Computing.

Visualizar tarefas de atualização históricas

Usando hologres.hg_dynamic_table_refresh_history

A tabela de sistema hologres.hg_dynamic_table_refresh_history registra o histórico de todas as tarefas de atualização — completas, incrementais e manuais — do último mês. Para descrições dos campos, consulte hologres.hg_dynamic_table_refresh_history.

Os registros são mantidos por um mês. Não é possível consultar dados anteriores a esse período.
Os proprietários das tabelas podem visualizar apenas seu próprio histórico de atualizações. Usuários com a função de superusuário podem visualizar todos os registros de atualização.

Exemplo 1: Visualizar tarefas de atualização incremental do último dia

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;

Exemplo 2: Visualizar todas as tarefas de atualização da instância no último dia

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';

Exemplo 3: Visualizar tarefas de atualização de uma tabela específica no último dia

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 tabelas dinâmicas de atualização completa criadas com a sintaxe legada 3.0, a tabela hologres.hg_dynamic_table_refresh_history pode não refletir com precisão o status de sucesso ou falha — uma atualização com falha pode aparecer como Success . Para recuperar o verdadeiro histórico de atualizações dessas tabelas: 1. Obtenha o cron_job_name em hologres.hg_dynamic_table_properties . 2. Consulte os registros de execução do cron job usando esse nome.
-- 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;

Usando logs de consultas lentas

As tarefas de atualização também aparecem nos logs de consultas lentas com o Command Type definido como refresh. Para obter mais informações, consulte Get and analyze slow query logs.

Visualizar o plano de execução de uma tarefa de atualização

Utilize EXPLAIN and EXPLAIN ANALYZE em uma instrução de atualização para visualizar seu plano de execução e identificar gargalos de desempenho, da mesma forma que faria com uma consulta regular.

EXPLAIN REFRESH DYNAMIC TABLE hmtest.dt_order_lineitem;

Saída de exemplo:

                                                                                              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)

Definir o tempo limite de atualização

Defina um tempo limite para evitar que tarefas de atualização longas bloqueiem recursos. O Hologres suporta três níveis de configuração de tempo limite.

Tempo limite no nível da tabela

Defina um tempo limite no nível da tabela ao criar a tabela dinâmica. Essa configuração aplica-se a todas as tarefas de atualização dessa tabela. O exemplo a seguir utiliza o conjunto de dados público tpch_10g. Antes de executar o código, importe o conjunto de dados. Para obter mais informações, 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;

Tempo limite no nível da sessão

Para uma atualização manual, defina o tempo limite usando um parâmetro GUC (Grand Unified Configuration) no nível da sessão:

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

Para obter mais informações sobre configurações de tempo limite, consulte Modify active query timeout.

Tempo limite por atualização

Substitua o tempo limite para uma única atualização manual usando refresh ... WITH (refresh_guc_statement_timeout = '...'):

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

Acionar uma atualização manual

Execute a seguinte instrução para acionar uma atualização imediata:

REFRESH DYNAMIC TABLE <schema_name.table_name>;
Se a atualização automática estiver ativada, uma atualização manual será executada em paralelo com a tarefa de atualização automática agendada. Ambas são concluídas normalmente. O sistema mantém apenas uma cópia dos dados mais recentes.

Cancelar uma tarefa de atualização

Tabelas dinâmicas criadas com a nova sintaxe 3.1

Cancelar uma tarefa de atualização em execução

Consulte o query_job_id da tarefa em execução em hologres.hg_dynamic_table_refresh_log e cancele-a usando 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>');
Apenas um superusuário pode cancelar uma tarefa de atualização usando hologres.hg_internal_cancel_query_job .

Pausar a atualização automática de uma tabela

Para interromper todas as tarefas de atualização subsequentes no nível da tabela, desative a atualização automática:

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

Esta operação interrompe todas as tarefas de atualização futuras da tabela. Os dados na tabela dinâmica não serão atualizados até que a atualização automática seja reativada. Para reativá-la, consulte ALTER DYNAMIC TABLE.

Tabelas dinâmicas criadas com a sintaxe 3.0

Cancelar uma tarefa de atualização em execução

Se uma tarefa de atualização estiver demorando muito ou parecer travada, cancele-a usando pg_cancel_backend.

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

Obtenha o pid em hologres.hg_dynamic_table_refresh_activity ou hg_stat_activity. Para obter mais informações, consulte View refresh tasks

Para cancelar tarefas de atualização em lote, use o mesmo método aplicado a consultas regulares. Para obter mais informações, consulte Terminate a query .

Pausar a atualização automática de uma tabela

Para interromper todas as tarefas de atualização subsequentes no nível da tabela:

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

Esta operação interrompe todas as tarefas de atualização futuras da tabela. Os dados na tabela dinâmica não serão atualizados até que a atualização automática seja reativada. Para reativá-la, consulte ALTER DYNAMIC TABLE.