A view de sistema hologres.hg_worker_info mostra como os shards são distribuídos entre os workers e a qual armazém virtual cada worker pertence. Use-a para diagnosticar utilização desigual de CPU — um sinal comum de distorção de carga de trabalho — e adotar ações corretivas específicas.
Limitações
Apenas o Hologres V1.3.23 e versões posteriores suportam
hologres.hg_worker_info. Verifique a versão da sua instância na página de detalhes da instância no console do Hologres. Se a versão for anterior à V1.3.23, atualize a instância manualmente ou entre em contato com o suporte. Para instruções de atualização, consulte Atualizações de instância.A view exibe apenas a alocação de shard em tempo real. Dados históricos de alocação não estão disponíveis.
Após criar um table group,
worker_idé preenchido com um atraso de 10 a 20 segundos. Uma consulta imediatamente após a criação pode retornar umworker_idvazio.Se um table group não tiver tabelas, nenhum recurso é alocado aos workers. Nesse caso,
worker_idaparece comoid/0. No Hologres V2.1 e versões posteriores, workers sem shards também aparecem na view, com umworker_idvazio.A view cobre apenas o banco de dados atual. Para obter uma visão completa em nível de instância, consulte cada banco de dados separadamente e agregue os resultados.
Visualizar a alocação de shard
A view hologres.hg_worker_info expõe quatro campos:
| Campo | Tipo de dados | Descrição |
|---|---|---|
worker_id | TEXT | ID do worker no banco de dados atual |
table_group_name | TEXT | Nome do table group |
shard_id | BIGINT | ID do shard no table group |
warehouse_id | BIGINT | ID do armazém virtual ao qual o worker pertence |
Execute a seguinte instrução para visualizar a alocação de shard atual:
SELECT * FROM hologres.hg_worker_info;Saída de exemplo:
worker_id | table_group_name | shard_id
------------+------------------+----------
bca90a00ef | tg1 | 0
ea405b4a9c | tg1 | 1
bca90a00ef | tg1 | 2
ea405b4a9c | tg1 | 3
bca90a00ef | db2_tg_default | 0
ea405b4a9c | db2_tg_default | 1
bca90a00ef | db2_tg_default | 2
ea405b4a9c | db2_tg_default | 3
ea405b4a9c | db2_tg_internal | 3xx_tg_internal é o table group integrado usado para gerenciar metadados. Ignore-o ao analisar a distribuição de shards.Diagnosticar a distorção de carga de trabalho
Se um ou mais workers apresentarem utilização de CPU consistentemente mais baixa que os demais, os shards podem não estar distribuídos de forma uniforme. Execute esta consulta para verificar a contagem de shards por worker:
SELECT worker_id, COUNT(1) AS shard_count
FROM hologres.hg_worker_info
GROUP BY worker_id;Uma instância balanceada apresenta o mesmo shard_count em todos os workers. Se as contagens diferirem, prossiga com a análise específica da causa abaixo para identificar a causa raiz.

Gerenciar a distorção de carga de trabalho
A distorção de carga de trabalho tem três causas comuns. Identifique qual se aplica à sua instância e aplique a correção correspondente.
Causa 1: Redistribuição desigual de shard após failover de worker
Quando um worker falha — por exemplo, devido a um erro de falta de memória (OOM) — o sistema move temporariamente os shards desse worker para outros workers. Após a recuperação do worker, alguns shards são movidos de volta, mas a redistribuição pode ser desigual.
Como os workers são compartilhados entre todos os bancos de dados de uma instância enquanto hg_worker_info exibe apenas o banco de dados atual, verifique cada banco de dados separadamente e some os resultados para obter a contagem total de shards por worker na instância.
Diagnóstico
SELECT worker_id, COUNT(1) AS shard_count
FROM hologres.hg_worker_info
GROUP BY worker_id;Saída de exemplo para uma instância com seis workers:
worker_id | shard_count
------------+-------------
bca90a | 4
ea405b | 4
tkn4vc | 4
bqw5cq | 3
mbbrf6 | 3
hsx66f | 1
(6 rows)As contagens de shards diferem significativamente entre os workers — hsx66f tem apenas 1 shard enquanto outros têm 3 ou 4, uma proporção de 4:1. Workers com menos shards geralmente exibem menor utilização de CPU no console do Hologres.
Correção
Reinicie a instância. Isso aciona um rebalanceamento completo de shards entre todos os workers. Sem uma reinicialização, workers ociosos só recebem shards adicionais se outro worker falhar novamente.
Causa 2: Distorção de dados
Quando a maioria das linhas de uma tabela se concentra em um número pequeno de shards, os workers que possuem esses shards processam uma quantidade desproporcional de dados. Isso faz a utilização de CPU deles aumentar abruptamente enquanto outros workers ficam subutilizados.
Diagnóstico
Etapa 1: Verifique a distorção de dados na tabela.
SELECT hg_shard_id, COUNT(1)
FROM <table_name>
GROUP BY hg_shard_id
ORDER BY 2;Saída de exemplo mostrando uma tabela com distorção — o shard 39 contém aproximadamente cinco vezes mais linhas que os demais:
hg_shard_id | count
-------------+--------
53 | 29130
65 | 28628
66 | 26970
70 | 28767
77 | 28753
24 | 30310
15 | 29550
39 | 164983Etapa 2: Identifique o worker responsável pelo shard com distorção.
Substitua <tablename> e <shard_id> pelos valores da etapa anterior:
SELECT DISTINCT b.table_name, a.worker_id, a.table_group_name, a.shard_id
FROM hologres.hg_worker_info a
JOIN (
SELECT property_value, table_name
FROM hologres.hg_table_properties
WHERE property_key = 'table_group'
) b
ON a.table_group_name = b.property_value
AND b.table_name = '<tablename>'
AND shard_id = <shard_id>;Saída de exemplo:
table_name | worker_id | table_group_name | shard_id
------------+------------+-------------------+----------
table03 | bca90a00ef | db2_tg_default | 39Se a utilização de CPU de bca90a00ef for muito maior que a dos outros workers, a distorção de dados é a causa.
Correção
Reconfigure a chave de distribuição para que as linhas se distribuam de forma mais uniforme entre os shards. Para instruções detalhadas, consulte Otimizar o desempenho de consultas em tabelas internas do Hologres.
Divida tabelas com distorção severa. Se os dados forem intrinsecamente distorcidos — por exemplo, uma tabela de pedidos de livestreaming em que poucos streamers principais representam a grande maioria do volume bruto de mercadoria (GMV) — divida a tabela pela dimensão distorcida em vez de tentar redistribuí-la.
Causa 3: Contagem de shards não alinhada com a contagem de workers
Contagens de shards que não são múltiplos da contagem de workers causam alocação desigual por design: alguns workers sempre recebem um shard extra.
Diagnóstico
SELECT table_group_name, worker_id,
COUNT(1) AS shard_count, warehouse_id
FROM hologres.hg_worker_info
GROUP BY table_group_name, worker_id, warehouse_id
ORDER BY table_group_name DESC;Saída de exemplo para uma instância com dois workers:
table_group_name | worker_id | shard_count | warehouse_id
------------------+------------+--------------+-------------
tg2 | ea405b4a9c | 1 | 1
tg2 | bca90a00ef | 2 | 2
tg1 | ea405b4a9c | 5 | 1
tg1 | bca90a00ef | 6 | 2
db2_tg_default | bca90a00ef | 4 | 2
db2_tg_default | ea405b4a9c | 4 | 1
db2_tg_internal | bca90a00ef | 1 | 2
(7 rows)Interpretando a saída:
tg2tem 3 shards entre 2 workers (1 vs. 2) — não é múltiplo de 2, portanto um worker sempre terá mais.tg1tem 11 shards entre 2 workers (5 vs. 6) — mesmo problema.db2_tg_defaulttem 8 shards entre 2 workers (4 vs. 4) — distribuição uniforme.
Correção
Defina a contagem de shards de cada table group como um múltiplo do número de workers. Estime o valor correto com base nos requisitos do seu negócio e, em seguida, reconfigure ou expanda a instância de acordo.