Todos os produtos
Search
Central de documentação

ApsaraDB RDS:Como configurar e usar o recurso de query cache do ApsaraDB RDS for MySQL?

Última atualização: Aug 26, 2026

O query cache armazena conjuntos de resultados de instruções SELECT na memória para que consultas idênticas ignorem as etapas de análise e execução — o resultado retorna diretamente do cache. Isso reduz a utilização da CPU, diminui os IOPS e encurta o tempo de resposta em cargas de trabalho com muitas leituras, poucas gravações e dados estáveis. Em cenários com muitas gravações ou padrões de consulta variados, a sobrecarga da invalidação do cache pode reduzir o throughput geral. Portanto, teste com sua carga de trabalho real antes de ativar esse recurso em produção.

Quando usar o query cache

O query cache oferece melhor desempenho quando todas as condições abaixo são verdadeiras:

  • Os dados da tabela mudam raramente ou são estáticos.

  • A mesma instrução SELECT é executada repetidamente.

  • Os conjuntos de resultados das consultas têm menos de 1 MB.

Importante

O query cache nem sempre traz benefícios. Para cargas de trabalho com gravações frequentes em tabelas ou consultas variadas, a sobrecarga de invalidar e repovoar o cache pode reduzir o throughput geral. Teste com sua carga de trabalho real antes de ativar o recurso em produção.

Como funciona

  1. O ApsaraDB RDS for MySQL calcula um valor de hash para cada instrução SELECT recebida de um cliente.

  2. Se o hash corresponder a uma entrada em cache, o resultado retorna imediatamente — a consulta não passa por análise nem execução.

  3. Caso não haja correspondência, a consulta executa normalmente, e tanto o hash quanto o resultado são armazenados no cache.

  4. Quando qualquer tabela sofre alteração, todas as consultas em cache que referenciam essa tabela são invalidadas e removidas imediatamente.

Limitações

As seguintes consultas não são armazenadas em cache:

  • Consultas que diferem apenas em maiúsculas/minúsculas, espaços em branco, contexto de banco de dados, versão do protocolo ou conjunto de caracteres são tratadas como distintas e armazenadas separadamente.

  • Conjuntos de resultados de subconsultas — apenas o conjunto de resultados final da consulta externa é armazenado.

  • Consultas executadas dentro de uma função armazenada, procedimento armazenado, gatilho ou evento.

  • Consultas que chamam qualquer uma destas funções não determinísticas: now(), curdate(), last_insert_id() ou rand().

  • Consultas que referenciam tabelas nos bancos de dados mysql, information_schema ou performance_schema.

  • Consultas que referenciam tabelas temporárias.

  • Consultas que geram avisos.

  • Consultas contendo SELECT … LOCK IN SHARE MODE, SELECT … FOR UPDATE ou SELECT * FROM … WHERE AUTOINCREMENT_COL IS NULL.

  • Consultas que referenciam uma variável definida pelo usuário.

  • Consultas que utilizam a dica SQL_NO_CACHE.

Configure o query cache

Defina estes três parâmetros no ApsaraDB RDS console:

Parâmetro

Padrão

Descrição

query_cache_type

—

Controla se o cache está ativo. 0 = desativado; 1 = ativado (consultas usando SELECT SQL_NO_CACHE são excluídas); 2 = sob demanda (apenas consultas SELECT SQL_CACHE são armazenadas).

query_cache_size

3 MB

Memória total alocada para o cache, em bytes. Deve ser um múltiplo de 1024.

query_cache_limit

1 MB

Tamanho máximo do conjunto de resultados para uma única consulta em cache, em bytes. Resultados maiores que este valor não são armazenados.

No painel de navegação à esquerda, clique em Parameters. Na lista de parâmetros, localize query_cache_type e atualize seu valor para o valor desejado. A alteração entra em vigor somente após a reinicialização da instância. Se necessário, modifique também parâmetros relacionados, como query_cache_limit (valores válidos: 1 a 1048576) e query_cache_size (valores válidos: 0 a 104857600). Clique em no ícone de informações ao lado de um parâmetro para visualizar sua descrição.

Importante

Alterar o parâmetro query_cache_type aciona uma reinicialização automática da instância RDS. Se você definir query_cache_size com um valor que não seja múltiplo de 1024, o console retornará o erro The specified parameter is invalid, com o código de erro InvalidParameters.Malformed.

Ative e desative o cache

O cache fica ativado quando query_cache_size > 0 e query_cache_type é 1 ou 2.

O cache fica desativado quando query_cache_size = 0 ou query_cache_type = 0.

Recomendações

  • Evite definir query_cache_size com um valor muito alto. Um cache excessivamente grande consome memória de outras estruturas da instância e aumenta a sobrecarga nas buscas. Comece com um valor entre 10 MB e 100 MB, conforme o tipo da sua instância, e ajuste-o com base no uso observado.

  • Para ativar ou desativar o query cache, ajuste o valor de query_cache_size em vez de query_cache_type, pois alterações em query_cache_type só entram em vigor após a reinicialização da instância.

  • O query cache beneficia apenas cargas de trabalho específicas. Teste exaustivamente com sua carga real antes de ativá-lo para evitar degradação de desempenho ou outros problemas.

Monitorar e verifique o desempenho do cache

Verifique estatísticas do cache

Execute a seguinte instrução para verificar o uso do cache:

SHOW GLOBAL STATUS LIKE 'Qcache%';

A saída inclui estas variáveis de status:

Variável

Descrição

Qcache_hits

Número de consultas atendidas pelo cache

Qcache_inserts

Número de consultas adicionadas ao cache

Qcache_not_cached

Número de consultas que não puderam ser armazenadas em cache

Qcache_queries_in_cache

Número de consultas atualmente no cache

Exemplo de saída:

mysql>show global status like 'Qca%';
+-------------------------+------------+
| Variable_name           | Value      |
+-------------------------+------------+
| Qcache_free_blocks      | 2763       |
| Qcache_free_memory      | 10115160   |
| Qcache_hits             | 365589713  |
| Qcache_inserts          | 612280336  |
| Qcache_lowmem_prunes    | 1257159    |
| Qcache_not_cached       | 1805250864 |
| Qcache_queries_in_cache | 9318       |
| Qcache_total_blocks     | 22409      |
+-------------------------+------------+

Verifique pelo console do ApsaraDB RDS

No painel de navegação à esquerda, escolha Autonomy Service (formerly CloudDBA) > Performance Trends. Visualize o gráfico MySQL CPU/Memory Utilization e confirme se a utilização da CPU e da memória permanece dentro da faixa normal.