Gerencie virtual warehouses para isolar recursos de computação, controlar a concorrência e otimizar o desempenho de consultas em diferentes workloads. Use o console do Hologres ou comandos SQL para criar, dimensionar, parar e excluir virtual warehouses.
Pré-requisitos
Antes de começar, verifique se você tem:
Uma instância do Hologres executando a versão V2.0.4 ou posterior. Se sua instância for anterior à V2.0.4, atualize-a.
As permissões necessárias para a operação. Consulte a seção Permissions abaixo.
Permissões
|
Operação |
Permissões necessárias |
|
Criar, excluir, parar, retomar, reiniciar, renomear |
Conta Alibaba Cloud ou usuário RAM com a função |
|
Dimensionamento (antes da V3.0.28) |
Conta Alibaba Cloud ou usuário RAM com a função |
|
Dimensionamento (V3.0.28 e posterior) |
Conta Alibaba Cloud, usuário RAM ( |
Observações de uso
Limite de virtual warehouses: Cada instância suporta no máximo 10 virtual warehouses.
Faixa de CUs por virtual warehouse: mínimo de 32 CUs, máximo de 512 CUs (incremento de 16). A partir da V3.0.10, o máximo aumenta para 1024 CUs. A partir da V3.0.27, o limite máximo de especificação foi removido.
Warehouse inicial: Ao adquirir uma instância de virtual warehouse, o Hologres cria automaticamente uma virtual warehouse padrão chamada
init_warehouse. Cada instância possui apenas uma virtual warehouse padrão. Não é possível excluir, parar ou retomar a virtual warehouse padrão via comandos SQL, mas você pode modificá-la. Todos os usuários têm permissão para usar a virtual warehouse padrão.Suporte a DDL: É possível executar comandos DDL em qualquer virtual warehouse.
Grupo de recursos: Instâncias de virtual warehouse não suportam grupos de recursos, pois esse recurso está sendo descontinuado. Para obter isolamento de recursos, crie múltiplas virtual warehouses. Para mais informações, consulte Resource Management.
Faturamento: Consulte Billing.
Crie uma virtual warehouse
A criação de uma virtual warehouse é assíncrona. Após executar o comando SQL, use hg_get_warehouse_status para verificar se a warehouse está em execução antes de utilizá-la.
Usar o console (recomendado)
Faça login no console do Hologres e selecione a região onde sua instância está localizada.
No painel de navegação à esquerda, clique em Instances e, em seguida, clique no Instance ID desejado.
No painel de navegação à esquerda da página do product, clique em Virtual Warehouse Management e acesse a aba Virtual Warehouse Resource Management.
-
Clique em Create Virtual Warehouse. Na caixa de diálogo, configure os parâmetros a seguir e clique em OK. Para mais informações, consulte Overview of resource elasticity.
Parâmetro
Descrição
Virtual Warehouse Name
Nome da virtual warehouse a ser criada.
Single-cluster Specs
Quantidade de recursos reservados para cada cluster na virtual warehouse.
Reserved Clusters
Número inicial de clusters. Os recursos para clusters reservados provêm do pool de recursos reservados da instância.
Usar SQL
Sintaxe
CALL hg_create_warehouse ('<warehouse_name>', <cu>);
Parâmetros
|
Parâmetro |
Tipo |
Descrição |
|
|
TEXT |
Nome da nova virtual warehouse. Pode conter apenas dígitos, letras e underscores ( |
|
|
INTEGER |
Número de CUs. |
Exclua uma virtual warehouse
Não é possível excluir a virtual warehouse padrão (init_warehouse) nem uma virtual warehouse que atua como leader warehouse de um table group. Pare a virtual warehouse antes de excluí-la.
A exclusão é assíncrona. Após executar o comando SQL, use hg_get_warehouse_status para confirmar que a exclusão foi concluída.
Usar o console (recomendado)
Faça login no console do Hologres e selecione a região onde sua instância está localizada.
No painel de navegação à esquerda, clique em Instances e, em seguida, clique no Instance ID desejado.
No painel de navegação à esquerda da página do product, clique em Virtual Warehouse Management e acesse a aba Virtual Warehouse Resource Management.
Na coluna Actions da virtual warehouse desejada, clique em Stop. Confirme a ação e aguarde a parada da warehouse.
Clique em Delete na coluna Actions para excluir a virtual warehouse.
Usar SQL
Sintaxe
CALL hg_drop_warehouse ('<warehouse_name>');
Parâmetros
|
Parâmetro |
Tipo |
Descrição |
|
|
TEXT |
Nome da virtual warehouse a ser excluída. |
Dimensionar uma virtual warehouse
As operações de dimensionamento são assíncronas. Verifique a conclusão com hg_get_warehouse_status antes de prosseguir com as próximas operações.
Para mais informações sobre como funciona o dimensionamento elástico, consulte Overview of resource elasticity.
Scale up (dimensionamento vertical)
O scale up aumenta a alocação de CUs por virtual warehouse. A instância deve ter recursos não alocados suficientes antes de realizar o scale up de uma virtual warehouse. Se necessário, dimensione a instância primeiro.
Impacto em consultas e gravações em execução
O aumento de recursos da instância não afeta consultas e gravações em execução no momento. No entanto, a alocação de recursos para virtual warehouses gera os seguintes impactos:
A partir da V3.0.28: consultas e gravações não são interrompidas durante o scale-up e scale-out. Tarefas do Flink podem falhar e tentar novamente.
Da V2.2 até a V3.0.28: consultas e gravações são interrompidas por cerca de 15 segundos devido ao rebalanceamento automático.
Antes da V2.2: consultas e gravações são interrompidas por cerca de 15 segundos após o rebalanceamento manual.
Transações DML de múltiplas linhas são interrompidas durante o scale-up, independentemente da versão. Isso inclui transações com hg_experimental_enable_transaction ativado, instruções nativas INSERT OVERWRITE e atualizações incrementais de Dynamic Tables .
Usar o console (recomendado)
Faça login no console do Hologres e selecione a região onde sua instância está localizada.
No painel de navegação à esquerda, clique em Instances e, em seguida, clique no Instance ID desejado.
No painel de navegação à esquerda da página do product, clique em Virtual Warehouse Management e acesse a aba Virtual Warehouse Resource Management.
Na coluna Actions da virtual warehouse desejada, clique em Modify Configuration. Aumente o valor de Single-cluster Specs para o valor alvo e clique em OK.
(Opcional) Clique em Rebalance na coluna Actions para redistribuir shards para os novos pods adicionados.
Usar SQL
-
Dimensione a virtual warehouse verticalmente:
Parâmetro
Tipo
Descrição
warehouse_nameTEXT
Nome da virtual warehouse a ser modificada.
cuINTEGER
Número alvo de CUs. Mínimo: 32. Máximo: 512. Incremento: 16.
CALL hg_alter_warehouse ('<warehouse_name>', <cu>); -
Aguarde a conclusão do dimensionamento:
select hg_get_warehouse_status('<warehouse_name>');Um valor de retorno
Runningindica que o dimensionamento foi concluído. -
Redistribua os shards para a warehouse dimensionada:
SELECT hg_rebalance_warehouse ('<warehouse_name>'); -
Verifique o status do rebalanceamento:
-- Check current status (returns DONE when complete) SELECT hg_get_rebalance_warehouse_status ('<warehouse_name>'); -- Or wait until rebalancing completes before returning select hg_wait_until_rebalance_warehouse_done('<warehouse_name>', <timeout_seconds>);timeout_seconds(INTEGER, opcional): Tempo limite em segundos.
Exemplo: Dimensionar read_warehouse_1 para 64 CUs.
-- Scale up the warehouse
CALL hg_alter_warehouse ('read_warehouse_1', 64);
-- Wait for the warehouse to be running
SELECT wait_until_warehouse_running ('read_warehouse_1');
-- Redistribute shards
SELECT hg_rebalance_warehouse ('read_warehouse_1');
-- Wait for rebalancing to complete
SELECT hg_wait_until_rebalance_warehouse_done ('read_warehouse_1');
Scale down (dimensionamento vertical)
O scale down aciona primeiro o rebalanceamento de shards, migrando-os dos pods que serão desativados e, em seguida, removendo esses pods. Os recursos liberados retornam ao pool de recursos não alocados da instância.
Impacto em consultas e gravações em execução
-
V3.1 e posterior (Beta): as principais consultas e gravações não são interrompidas. Erros ou desconexões transitórias ocorrem apenas nos seguintes casos:
Na V3.1, todas as conexões nos pods que estão sendo desativados são desconectadas por alguns segundos. Na V4.0 e posterior, apenas conexões que criaram tabelas temporárias e conexões que consomem binlogs são desconectadas.
Jobs do Flink e Holo Client podem falhar e tentar novamente.
Transações DML de múltiplas linhas são interrompidas. Isso inclui transações com
hg_experimental_enable_transactionativado, instruções nativas INSERT OVERWRITE e atualizações incrementais de Dynamic Tables.Se uma consulta grande, gravação extensa ou transação de longa duração estiver em andamento quando o scale-down iniciar e precisar de mais de 60 minutos para concluir, ela falhará 60 minutos após o início do scale-down.
Versões anteriores à V3.1: consultas e gravações são interrompidas por vários minutos durante o scale-down.
Após o scale-down, utilize os recursos liberados para criar novas virtual warehouses, dimensionar outras warehouses verticalmente ou liberar recursos da instância.
Usar o console (recomendado)
Siga os mesmos passos de Scale up, mas diminua o valor de Single-cluster Specs para o valor alvo.
Usar SQL
-
Reduza o dimensionamento da virtual warehouse:
Parâmetro
Tipo
Descrição
warehouse_nameTEXT
Nome da virtual warehouse a ser modificada.
cuINTEGER
Número alvo de CUs. Mínimo: 32. Máximo: 512. Incremento: 16.
CALL hg_alter_warehouse ('<warehouse_name>', <cu>); -
Verifique se a warehouse voltou ao estado de execução:
select hg_get_warehouse_status('<warehouse_name>');Um valor de retorno
Runningconfirma que o scale-down foi concluído.
Scale out (dimensionamento horizontal)
O scale out adiciona mais clusters à virtual warehouse. Aplicam-se as mesmas observações de uso do scale-up.
Usar o console
Faça login no console do Hologres e selecione a região onde sua instância está localizada.
No painel de navegação à esquerda, clique em Instances e, em seguida, clique no Instance ID desejado.
No painel de navegação à esquerda da página do product, clique em Virtual Warehouse Management e acesse a aba Virtual Warehouse Resource Management.
Na coluna Actions da virtual warehouse desejada, clique em Modify Configuration. Aumente o número de Reserved Clusters para o valor alvo e clique em OK.
Scale in (dimensionamento horizontal)
O scale in reduz o número de clusters na virtual warehouse. Aplicam-se as mesmas observações de uso do scale-down.
Usar o console
Faça login no console do Hologres e selecione a região onde sua instância está localizada.
No painel de navegação à esquerda, clique em Instances e, em seguida, clique no Instance ID desejado.
No painel de navegação à esquerda da página do product, clique em Virtual Warehouse Management e acesse a aba Virtual Warehouse Resource Management.
Na coluna Actions da virtual warehouse desejada, clique em Modify Configuration. Diminua o número de Reserved Clusters para o valor alvo e clique em OK.
Operações de O&M de virtual warehouse
Visualize virtual warehouses
-- View all virtual warehouses in the current instance
SELECT * FROM hologres.hg_warehouses;
-- View the virtual warehouse currently in use
SELECT current_warehouse();
A tabela de sistema hologres.hg_warehouses contém as seguintes colunas:
|
Campo |
Tipo de dado |
Descrição |
Exemplo |
|
|
INTEGER |
ID exclusivo da virtual warehouse. |
|
|
|
TEXT |
Nome da virtual warehouse. |
|
|
|
INTEGER |
Número de núcleos de CPU. |
|
|
|
INTEGER |
Memória em GB. |
|
|
|
INTEGER |
Número mínimo de shards. |
|
|
|
INTEGER |
Número máximo de shards. |
|
|
|
INTEGER |
Status alvo da virtual warehouse. Como as mudanças de status são assíncronas, este campo registra o estado final pretendido. Valores válidos: |
|
|
|
INTEGER |
Status atual. Valores válidos: |
|
|
|
TEXT |
Detalhes adicionais sobre o status atual. |
— |
|
|
BOOLEAN |
Indica se esta é a virtual warehouse padrão. |
|
|
|
TEXT |
Configuração da virtual warehouse. |
— |
|
|
TEXT |
Observações sobre a virtual warehouse. |
— |
Parar uma virtual warehouse
Não é possível parar a virtual warehouse padrão (init_warehouse) nem uma virtual warehouse primária cujo table group possua uma virtual warehouse secundária.
A parada é assíncrona. Use hg_get_warehouse_status para verificar se a warehouse parou.
Usar o console (recomendado)
Faça login no console do Hologres e selecione a região onde sua instância está localizada.
No painel de navegação à esquerda, clique em Instances e, em seguida, clique no Instance ID desejado.
No painel de navegação à esquerda da página do product, clique em Virtual Warehouse Management e acesse a aba Virtual Warehouse Resource Management.
Na coluna Actions da virtual warehouse desejada, clique em Stop e confirme a ação.
Usar SQL
CALL hg_suspend_warehouse ('<warehouse_name>');
|
Parâmetro |
Tipo |
Descrição |
|
|
TEXT |
Nome da virtual warehouse a ser parada. |
Retomar uma virtual warehouse
A retomada de uma virtual warehouse é assíncrona. Use hg_get_warehouse_status para verificar se a warehouse está em execução antes de enviar consultas.
Usar o console (recomendado)
Faça login no console do Hologres e selecione a região onde sua instância está localizada.
No painel de navegação à esquerda, clique em Instances e, em seguida, clique no Instance ID desejado.
No painel de navegação à esquerda da página do product, clique em Virtual Warehouse Management e acesse a aba Virtual Warehouse Resource Management.
Na coluna Actions da virtual warehouse desejada, clique em Start e confirme a ação.
Usar SQL
CALL hg_resume_warehouse ('<warehouse_name>');
|
Parâmetro |
Tipo |
Descrição |
|
|
TEXT |
Nome da virtual warehouse a ser retomada. |
Reiniciar uma virtual warehouse
A reinicialização de uma virtual warehouse é assíncrona. Use hg_get_warehouse_status para verificar se a warehouse está em execução antes de enviar consultas.
Usar o console (recomendado)
Faça login no console do Hologres e selecione a região onde sua instância está localizada.
No painel de navegação à esquerda, clique em Instances e, em seguida, clique no Instance ID desejado.
No painel de navegação à esquerda da página do product, clique em Virtual Warehouse Management e acesse a aba Virtual Warehouse Resource Management.
Na coluna Actions da virtual warehouse desejada, clique em Restart e confirme a ação.
Usar SQL
CALL hg_restart_warehouse('<warehouse_name>');
|
Parâmetro |
Tipo |
Descrição |
|
|
TEXT |
Nome da virtual warehouse a ser reiniciada. |
Verifique o status da virtual warehouse
Todas as operações de criação, dimensionamento, parada, retomada e reinicialização são assíncronas. Use as funções a seguir para monitorar o status.
-- Get the current status of a virtual warehouse
select hg_get_warehouse_status('<warehouse_name>');
Para bloquear a execução até que uma virtual warehouse atinja o estado Running, use wait_until_warehouse_running:
select wait_until_warehouse_running('<warehouse_name>', <timeout_seconds>);
|
Parâmetro |
Tipo |
Descrição |
|
|
TEXT |
Nome da virtual warehouse. |
|
|
INTEGER |
(Opcional) Tempo limite em segundos. |
Exemplo: Faça o scale up de warehouse_1 antes de carregar dados e, em seguida, faça o scale down.
-- Scale up to 64 CUs
CALL hg_alter_warehouse ('warehouse_1', 64);
-- Wait until running
SELECT wait_until_warehouse_running('warehouse_1');
-- Run the data load
INSERT INTO res_data SELECT * FROM org_data;
-- Scale back down to 32 CUs
CALL hg_alter_warehouse ('warehouse_1', 32);
Renomear uma virtual warehouse
Usar o console (recomendado)
Faça login no console do Hologres e selecione a região onde sua instância está localizada.
No painel de navegação à esquerda, clique em Instances e, em seguida, clique no Instance ID desejado.
No painel de navegação à esquerda da página do product, clique em Virtual Warehouse Management e acesse a aba Virtual Warehouse Resource Management.
Na coluna Virtual Warehouse Name, clique em
para renomear a warehouse.
Usar SQL
CALL hg_rename_warehouse('<org_warehouse_name>', '<new_warehouse_name>');
|
Parâmetro |
Tipo |
Descrição |
|
|
TEXT |
Nome atual da virtual warehouse. |
|
|
TEXT |
Novo nome. |
Operações avançadas
Rebalancear uma virtual warehouse
Em condições normais, os nós worker em uma virtual warehouse carregam metadados de shards de forma equilibrada. Após uma recuperação rápida, scale-up ou scale-out, os shards podem ficar distribuídos de maneira desigual. Acione um rebalanceamento para redistribuir os shards, garantindo que cada nó worker carregue uma quantidade aproximadamente igual.
A partir da V2.1: O Hologres aciona automaticamente o rebalanceamento quando uma warehouse possui nós worker vazios.
A partir da V2.2: Consultas SELECT executadas durante o rebalanceamento são tentadas novamente automaticamente, evitando erros como
ERROR: fail to execute query internal error: Get rundown is not allowed in recovering state.
Uma operação de rebalanceamento geralmente leva de 2 a 3 minutos, dependendo do número de table groups. As operações de gravação são interrompidas por aproximadamente 15 segundos durante o rebalanceamento.
Sintaxe
SELECT hg_rebalance_warehouse ('<warehouse_name>');
|
Parâmetro |
Tipo |
Descrição |
|
|
TEXT |
Nome da virtual warehouse a ser rebalanceada. |
Valores de retorno
|
Valor |
Significado |
|
|
Rebalanceamento acionado com sucesso. |
|
|
Rebalanceamento desnecessário — os shards já estão equilibrados. |
|
Erro |
Falha ao acionar o rebalanceamento (por exemplo, um pod está com defeito). |
Quando a diferença no número de shards carregados por cada nó worker for igual ou inferior a 1, isso indica que o rebalanceamento terminou. Por exemplo:
2 workers, 2 shards: cada worker carrega 1 shard.
2 workers, 3 shards: um worker carrega 1 shard e o outro carrega 2 shards.
Como o rebalanceamento é assíncrono, monitore o progresso com:
SELECT hg_get_rebalance_warehouse_status('<warehouse_name>');
DOING significa que o rebalanceamento está em andamento. DONE indica que foi concluído.
Defina o tempo limite de instrução para uma virtual warehouse
O tempo limite no nível da virtual warehouse tem prioridade menor do que as configurações no nível de sessão e de banco de dados. Para tornar a configuração no nível da warehouse efetiva, primeiro redefina a configuração no nível do banco de dados.
-- Reset the database-level setting
ALTER DATABASE <db_name> RESET statement_timeout;
-- Set the timeout for the virtual warehouse (value in milliseconds)
CALL hg_alter_warehouse ('<warehouse_name>', <cu>, '{"configs":{"gucs":{"statement_timeout":"600000"}}}');
Para mais informações sobre statement_timeout e outros parâmetros GUC, consulte GUC parameters.