Todos os produtos
Search
Central de documentação

Hologres:Configurar cache de consulta

Última atualização: Jun 28, 2026

O cache de consulta armazena resultados na memória para atender consultas idênticas ou semelhantes diretamente do cache, sem leitura de dados ou processamento. Esse recurso é mais eficaz em cargas de trabalho repetitivas e de alta concorrência, como testes de estresse e relatórios de BI.

O Hologres V3.1 e versões posteriores oferecem suporte ao cache de consulta, desativado por padrão.

Pré-requisitos

Antes de começar, verifique se você tem:

Como funciona

A memória do Hologres divide-se em três categorias: execução de consultas, cache e metadados. A camada de cache pode usar até 30% da memória total da instância. Por exemplo, um worker com limite de 64 GB pode alocar até 20 GB para cache. O cache de consulta consome recursos dessa alocação.

Ao receber uma consulta, o Hologres verifica se existe um resultado correspondente no cache. Em caso positivo, o sistema retorna o resultado imediatamente. Caso contrário, executa a consulta normalmente e armazena o resultado no cache para solicitações subsequentes.

Modelo de consistência: O cache de consulta usa um modelo de consistência fraca. Se houver gravação de dados durante o período de retenção do cache, os resultados armazenados podem não refletir as alterações mais recentes. Para casos de uso em que a atualização dos dados é crítica, desative o cache de consulta ou defina um TTL menor.

Consultas não armazenadas em cache: O sistema nunca armazena em cache consultas que contêm a função RANDOM, pois seus resultados são não determinísticos.

Ativar o cache de consulta

O cache de consulta vem desativado por padrão. Para ativá-lo explicitamente, execute o comando abaixo como superusuário. A alteração entra em vigor apenas para novas conexões.

-- Enable query cache (requires superuser privileges; takes effect for new connections)
ALTER DATABASE <database_name> SET hg_experimental_enable_query_cache=on;

Configurar o cache de consulta

Definir a alocação de memória (query_cache_percentage)

Aloque uma porcentagem da memória da camada de cache para o cache de consulta. A fórmula de memória por worker é:

Memory per worker = 20 GB x query_cache_percentage x 0.01
Total memory      = Memory per worker x Number of workers

Por exemplo, definir query_cache_percentage=2 aloca 400 MB por worker (20 GB x 2 x 0,01).

-- Allocate 2% of cache memory to query cache (400 MB per worker in a 64 GB instance)
SELECT hg_admin_command('set_global_flag', 'query_cache_percentage=2');

Definir o tamanho máximo por resultado em cache

O tamanho máximo padrão para um único resultado em cache é 10 MB. O valor máximo permitido é 20 GB.

-- Set maximum size per cached result (default: 10 MB, shown here as 10240 KB)
ALTER DATABASE <database_name> SET hg_experimental_query_cache_max_kb_per_item=10240;

Definir o TTL (tempo de vida)

O TTL controla a validade de um resultado em cache antes da expiração. O padrão é 60 segundos.

Escolha o TTL com base na frequência de alteração dos dados subjacentes:

  • Dados com alteração lenta: defina um TTL maior para permitir que o cache atenda mais consultas.

  • Dados atualizados frequentemente: defina um TTL menor para reduzir o risco de resultados desatualizados ou desative completamente o cache de consulta.

O Hologres também aplica políticas de evicção com base na pressão de memória e no período de retenção.

-- Set TTL in seconds (default: 60)
ALTER DATABASE <database_name> SET hg_experimental_query_cache_expire_time_sec=60;

Parâmetros

Parâmetro

Descrição

Padrão

Unidade

hg_experimental_enable_query_cache

Ativa ou desativa o cache de consulta. Requer privilégios de superusuário. Entra em vigor apenas para novas conexões.

off

query_cache_percentage

Porcentagem da memória da camada de cache alocada para o cache de consulta.

%

hg_experimental_query_cache_max_kb_per_item

Memória máxima para um único resultado em cache. Valor máximo: 20 GB.

10240 KB (10 MB)

KB

hg_experimental_query_cache_expire_time_sec

TTL do cache. Resultados mais antigos que esse valor expiram e são removidos.

60

Segundos