Em ambientes de produção, algumas consultas de leitura e escrita são imprevisíveis. Não é possível saber antecipadamente se uma consulta consumirá recursos excessivos, qual usuário a executará ou como classificá-la. Análises ad hoc, cargas de trabalho com volumes de dados imprevisíveis e consultas que exigem varreduras extensas podem esgotar todos os recursos de computação de um virtual warehouse e degradar o desempenho de todas as outras consultas executadas simultaneamente.
A computação serverless adaptativa resolve esse problema ao direcionar automaticamente consultas que demandam muitos recursos para recursos serverless, sem necessidade de intervenção manual ou regras de roteamento predefinidas. O Hologres oferece dois recursos:
Isolamento adaptativo de tarefas grandes (disponível a partir da V3.1): identifica automaticamente consultas que ultrapassam um limiar de recursos e as executa em recursos serverless.
Isolamento adaptativo de carga (Beta, disponível a partir da V4.1): ajusta dinamicamente o limiar com base na carga atual e direciona consultas pesadas para recursos serverless apenas quando a instância estiver sob alta carga.
Como funciona
O Hologres estima os Required Cores de cada instrução SQL com base na complexidade e no volume de dados das tabelas envolvidas. Essa estimativa determina a quantidade de recursos de computação necessários para a instrução.
Uma instrução é executada automaticamente em recursos serverless quando seus Required Cores estimados excedem ambos os limiares configurados:
Required Cores > max(ratio threshold, absolute threshold)
Dois parâmetros controlam os limiares. Para o recurso de isolamento adaptativo de tarefas grandes, modifique estes dois limiares:
|
Parâmetro |
Descrição |
Padrão |
|
|
Coeficiente do limiar de proporção. Para instâncias de virtual warehouse, o limiar de proporção equivale a este coeficiente multiplicado pelos recursos de computação do virtual warehouse. Para instâncias de uso geral, o limiar de proporção equivale a este coeficiente multiplicado pelos recursos de computação da instância. |
|
|
|
Limiar absoluto, em CUs. |
|
A quantidade total de recursos serverless para uma instrução corresponde ao menor valor entre Quota, Max Cores e Required Cores. Para mais detalhes, consulte A quantidade de recursos serverless usada por uma instrução SQL .
Ative o isolamento adaptativo de tarefas grandes
O isolamento adaptativo de tarefas grandes direciona todas as instruções que excedem os limiares configurados para recursos serverless, independentemente do nível de carga atual.
Os parâmetros e seus escopos variam conforme a versão:
Antes da V4.1: ative tanto
hg_enable_adaptive_serverless_computingquantohg_adaptive_serverless_computing_enable_big_query_isolation.A partir da V4.1:
hg_enable_adaptive_serverless_computingfoi descontinuado. Ative apenashg_adaptive_serverless_computing_enable_big_query_isolation.
Ative o recurso no nível de sessão, usuário ou banco de dados:
-- Session level
SET hg_enable_adaptive_serverless_computing = on;
SET hg_adaptive_serverless_computing_enable_big_query_isolation = on;
-- User level
ALTER USER "<role_name>" IN DATABASE <db_name> SET hg_enable_adaptive_serverless_computing = on;
ALTER USER "<role_name>" IN DATABASE <db_name> SET hg_adaptive_serverless_computing_enable_big_query_isolation = on;
-- DB level
ALTER DATABASE <db_name> SET hg_enable_adaptive_serverless_computing = on;
ALTER DATABASE <db_name> SET hg_adaptive_serverless_computing_enable_big_query_isolation = on;
Para ajustar os limiares, modifique os parâmetros de limiar no nível de sessão, usuário ou banco de dados:
-- Session level
SET hg_adaptive_serverless_computing_min_resource_ratio_threshold = 0.3;
SET hg_adaptive_serverless_computing_min_cores_threshold = 256;
-- User level
ALTER USER "<role_name>" IN DATABASE <db_name> SET hg_adaptive_serverless_computing_min_resource_ratio_threshold = 0.3;
ALTER USER "<role_name>" IN DATABASE <db_name> SET hg_adaptive_serverless_computing_min_cores_threshold = 256;
-- DB level
ALTER DATABASE <db_name> SET hg_adaptive_serverless_computing_min_resource_ratio_threshold = 0.3;
ALTER DATABASE <db_name> SET hg_adaptive_serverless_computing_min_cores_threshold = 256;
Ative o isolamento adaptativo de carga (Beta)
O isolamento adaptativo de carga ajusta dinamicamente o limiar de recursos com base na carga atual. Consultas pesadas são direcionadas para recursos serverless somente quando a instância está sob alta carga, mantendo os limiares efetivamente inativos durante períodos de baixa carga.
Ative este recurso no nível de banco de dados:
-- DB level
ALTER DATABASE <db_name> SET hg_adaptive_serverless_computing_enable_load_isolation = on;
O sistema determina automaticamente se deve ativar o roteamento com base nas condições de carga em tempo real. Nenhuma configuração adicional é necessária.
Verifique se uma instrução aciona a computação serverless adaptativa
Use a função hg_estimate_adaptive_serverless_computing para verificar se uma instrução SQL específica seria direcionada para recursos serverless com as configurações de parâmetros atuais.
Para instruções sem aspas simples:
SELECT * FROM hologres.hg_estimate_adaptive_serverless_computing('select * from tbl;');
Para instruções que contêm aspas simples, use dollar-quoting para evitar escape:
SELECT * FROM hologres.hg_estimate_adaptive_serverless_computing($$insert into test_tbl_dst_1 select * from test_tbl_src;$$);
A função retorna os seguintes campos:
|
Campo |
Descrição |
|
|
Required Cores estimados pelo sistema para a instrução. |
|
|
Indica se a instrução é direcionada para recursos serverless com as configurações atuais. |
|
|
Coeficiente do limiar de proporção atualmente em vigor. |
|
|
Limiar absoluto atualmente em vigor, em CUs. |
Valores de status
|
Valor |
Significado |
|
|
A instrução excede as condições de limiar e é executada em recursos serverless. |
|
|
A instrução não atende às condições de limiar e é executada nos próprios recursos da instância. |
|
|
A instrução não é elegível para computação serverless e é executada nos próprios recursos da instância. |