Todos os produtos
Search
Central de documentação

Hologres:Run read and write tasks with serverless computing

Última atualização: Jun 28, 2026

Cargas de trabalho DML e DQL que competem com consultas de produção podem causar erros de falta de memória (OOM) e degradar a estabilidade da instância. O Serverless Computing direciona essas cargas para um pool de recursos elástico externo à instância, isolando operações pesadas sem afetar o tráfego em tempo real. Compatível com Hologres V2.1.17 e versões posteriores.

Tarefas compatíveis

Versão

Tarefas compatíveis

V2.1.17+

Principais tarefas de Data Manipulation Language (DML): INSERT (exceto INSERT OVERWRITE), INSERT ON CONFLICT (UPSERT), DELETE, UPDATE

V2.2.14+

Tarefas de Data Query Language (DQL)

V3.0.1+

Tarefas COPY em DML

V3.0.9+

Tarefas CREATE TABLE AS (CTAS) em DML

V2.2.42, V3.0.19+

Tarefas RESHARDING

V3.0.26+

INSERT OVERWRITE por meio do procedimento armazenado hg_insert_overwrite; DML e DQL dentro de procedimentos armazenados

V3.1.0+

Sintaxe nativa INSERT OVERWRITE em DML; tarefas REBUILD

V3.1.3+

Leitura e gravação em tabelas internas criptografadas do Hologres e tabelas externas criptografadas mapeadas para MaxCompute. Ative o parâmetro GUC hg_serverless_computing_enable_encrypted_table para tabelas internas criptografadas. Consulte Criptografia de dados.

V3.1.11+

Tarefas de compactação. Consulte Descarregar compactação para recursos serverless

V4.0+

Leitura e gravação em tabelas externas do Data Lake Formation (DLF). Consulte Aceleração de data lake OSS usando DLF

V4.1+

Suporte a Mascaramento de dados

Extensões de função compatíveis: ClickHouse, Flow Analysis, PostGIS, RoaringBitmap, BSI e Proxima.

Limitações

O Serverless Computing não oferece suporte a:

  • Consultas em instâncias secundárias somente leitura. Instâncias primárias e instâncias de virtual warehouse não são afetadas.

  • Consultas com transações DML de múltiplas linhas ativadas (set hg_experimental_enable_transaction = on).

  • Instruções SQL que utilizam Fixed Plan.

  • Consultas e gravações entre bancos de dados.

Direcionar SQL para recursos serverless

O Hologres avalia as regras de roteamento na seguinte ordem de prioridade. A primeira regra correspondente é aplicada:

Prioridade

Método

Mais indicado para

1 (mais alta)

Configuração no nível de sessão

Tarefas únicas ou ad hoc na conexão atual

2

Configuração no nível de usuário

Usuários ou funções específicos que devem sempre usar recursos serverless

3

Configuração no nível de Query Queue

Lotes de SQL por tipo, mecanismo, fingerprint SQL ou modo de armazenamento

4

Serverless Computing adaptativo

Identificação e roteamento automático de tarefas grandes

5 (mais baixa)

Nenhum — recursos da instância

Todo o restante do SQL

Nota

Quando uma instrução SQL é executada em recursos serverless, os recursos de computação são alocados exclusivamente para essa instrução. Nenhuma outra SQL é executada simultaneamente nesses recursos.

Importante

Direcionar uma solicitação para recursos serverless envolve processamento de metadados na instância, o que consome uma pequena quantidade de recursos de computação da instância. Evite QPS (consultas por segundo) excessivamente alto para solicitações serverless.

  • Em instâncias de uso geral, o processamento de metadados consome os próprios recursos de computação da instância.

  • Em instâncias de virtual warehouse, o processamento de metadados consome recursos da virtual warehouse líder, independentemente de você se conectar através da virtual warehouse líder ou seguidora de um Table Group.

Configuração no nível de sessão

Defina hg_computing_resource no nível de sessão para direcionar todo o SQL da conexão atual para recursos serverless. Redefina o parâmetro imediatamente após a conclusão da tarefa para evitar o direcionamento não intencional de consultas subsequentes.

Utilize este método para:

  • Tarefas pontuais, como backfills de dados históricos ou modificações de esquema/propriedades de tabela (via REBUILD).

  • Tarefas periódicas de importação em lote (M+1, T+1 ou H+1).

  • Cenários que exigem controle flexível de roteamento de recursos por sessão.

-- Route the current session to Serverless Computing resources.
-- Default value is local (uses instance resources).
SET hg_computing_resource = 'serverless';

-- Run your DML statement.
INSERT INTO sink_tbl SELECT * FROM source_tbl;

-- Reset after the task. This prevents subsequent SQL from using serverless resources unintentionally.
RESET hg_computing_resource;
Importante

Não defina este parâmetro no nível do banco de dados. Sempre execute RESET hg_computing_resource após concluir sua tarefa.

Exemplo completo:

-- Data preparation
CREATE TABLE source_tbl (id int);
CREATE TABLE sink_tbl (id int);
INSERT INTO source_tbl SELECT * FROM generate_series(1, 99999999);

-- Route to serverless and run the task
SET hg_computing_resource = 'serverless';
INSERT INTO sink_tbl SELECT * FROM source_tbl;
RESET hg_computing_resource;

Configuração no nível de usuário

Configure todo o SQL iniciado por um usuário ou função específica para ser executado em recursos serverless por padrão. Este método tem prioridade sobre a configuração GUC no nível do banco de dados, mas cede à configuração no nível de sessão. Para mais detalhes, consulte Parâmetros GUC.

Este método é recomendado para:

  • Superusuários ou outros usuários com altos privilégios cujas tarefas devem sempre utilizar recursos serverless.

  • Contas de fonte de dados que alimentam painéis de alta prioridade.

-- Route all SQL from a specific user in a database to serverless resources.
ALTER USER "<role_name>" IN DATABASE <db_name> SET hg_computing_resource = 'serverless';

-- Revert the configuration.
ALTER USER "<role_name>" IN DATABASE <db_name> RESET hg_computing_resource;

Configuração no nível de Query Queue

Configure uma Query Queue inteira para direcionar todo o seu SQL para recursos serverless. Isso permite usar classificadores de Query Queue para atingir SQL específico por tipo, mecanismo, fingerprint SQL ou modo de armazenamento. Para mais detalhes, consulte Query Queue.

Exemplos de critérios de direcionamento:

  • Por tipo de consulta: INSERT, SELECT, UPDATE, DELETE

  • Por mecanismo de consulta: HQE, PQE, SQE, HiveQE. Por exemplo, direcione todas as tarefas SQE (consultas MaxCompute via FDW) para recursos serverless.

  • Por fingerprint SQL: Se um padrão de consulta específico representar um risco à estabilidade, configure seu fingerprint SQL para sempre executar em recursos serverless.

  • Por modo de armazenamento: Direcione todas as consultas de cold storage para recursos serverless.

Instância de uso geral:

-- Route all queries in the target queue to serverless resources.
CALL hg_set_query_queue_property('<query_queue_name>', 'computing_resource', 'serverless');

-- (Optional) Set the query priority for this queue when using serverless resources.
-- Valid values: 1-5. Default: 3.
CALL hg_set_query_queue_property('<query_queue_name>', 'query_priority_when_using_serverless_computing', '<priority>');

Instância de virtual warehouse:

-- Route all queries in the target queue to serverless resources.
CALL hg_set_query_queue_property('<warehouse_name>', '<query_queue_name>', 'computing_resource', 'serverless');

-- (Optional) Set the query priority for this queue when using serverless resources.
-- Valid values: 1-5. Default: 3.
CALL hg_set_query_queue_property('<warehouse_name>', '<query_queue_name>', 'query_priority_when_using_serverless_computing', '<priority>');

Serverless Computing adaptativo

O Hologres identifica automaticamente tarefas grandes e as direciona para recursos serverless, sem necessidade de configuração manual por consulta. Para mais detalhes, consulte Serverless Computing adaptativo.

Nova tentativa automática para tarefas grandes

Defina limiares para "consultas grandes", como consultas que excedem uma duração especificada ou causam erro OOM. O Hologres tenta automaticamente reexecutar essas consultas em recursos serverless. Essa abordagem reduz a carga nos serviços de produção, diminui a frequência de erros OOM e melhora a estabilidade do sistema. Para mais detalhes, consulte Controlar big queries.

Definir prioridade da tarefa

Quando várias instruções SQL estão na fila para recursos serverless, o Hologres aloca recursos por prioridade. Tarefas de maior prioridade recebem recursos primeiro, independentemente da quantidade de recursos solicitada.

Parâmetro

Valores válidos

Padrão

Escopo

hg_experimental_serverless_computing_query_priority

1–5 (5 = mais alta)

3

Nível de sessão ou usuário

Funcionamento da alocação por prioridade:

Condição

Comportamento

Tarefa de maior prioridade entra na fila

O sistema aguarda a conclusão das tarefas em execução e aloca recursos para a tarefa de maior prioridade primeiro

Múltiplas tarefas com a mesma prioridade

Os recursos são alocados seguindo a ordem da fila

Recursos disponíveis insuficientes para a próxima tarefa

O sistema aguarda até que haja recursos suficientes livres, mesmo que tarefas de menor prioridade pudessem rodar com os recursos atualmente disponíveis

Exemplo: Sua instância possui 32 vCPUs, com um máximo de 96 vCPUs serverless disponíveis. O SQL A está em execução usando 64 vCPUs. A fila contém o SQL B (48 vCPUs, prioridade 5) e o SQL C (32 vCPUs, prioridade 3). Embora 32 vCPUs estejam disponíveis imediatamente, o sistema aguarda o término do SQL A e aloca 48 vCPUs para o SQL B primeiro, pois o SQL B tem prioridade mais alta.

Nível de sessão:

SET hg_experimental_serverless_computing_query_priority = 5;
-- Run your task.
RESET hg_experimental_serverless_computing_query_priority;

Nível de usuário:

ALTER USER "<role_name>" IN DATABASE <db_name> SET hg_experimental_serverless_computing_query_priority = 5;
-- Revert the configuration.
ALTER USER "<role_name>" IN DATABASE <db_name> RESET hg_experimental_serverless_computing_query_priority;

Exemplo combinado — direcionar para serverless e definir prioridade:

SET hg_computing_resource = 'serverless';
SET hg_experimental_serverless_computing_query_priority = 5;

INSERT INTO sink_tbl SELECT * FROM source_tbl;

RESET hg_computing_resource;
RESET hg_experimental_serverless_computing_query_priority;

Verificar o Serverless Computing

Use EXPLAIN para confirmar se uma instrução SQL será direcionada para recursos serverless antes de executá-la.

SET hg_computing_resource = 'serverless';
EXPLAIN INSERT INTO sink_tbl SELECT * FROM source_tbl;
RESET hg_computing_resource;

A saída será semelhante à seguinte. Se Computing Resource: Serverless aparecer, a instrução foi direcionada corretamente.

                                        QUERY PLAN
------------------------------------------------------------------------------------------
 Gather  (cost=0.00..5.18 rows=100 width=4)
   ->  Insert  (cost=0.00..5.18 rows=100 width=4)
         ->  Redistribution  (cost=0.00..5.10 rows=100 width=4)
               ->  Local Gather  (cost=0.00..5.10 rows=100 width=4)
                     ->  Decode  (cost=0.00..5.10 rows=100 width=4)
                           ->  Seq Scan on source_tbl  (cost=0.00..5.00 rows=100 width=4)
 Computing Resource: Serverless
 Optimizer: HQO version 2.1.0
(8 rows)

Para monitorar tarefas serverless em execução e históricas, consulte Monitorar tarefas de Serverless Computing.

Referências