Todos os produtos
Search
Central de documentação

ApsaraDB RDS:Cache de consultas do ApsaraDB RDS for MySQL

Última atualização: Jul 04, 2026

Recursos e casos de uso

Benefícios:

  • Reduz a utilização da CPU.

  • Diminui o uso de IOPS em determinados cenários.

  • Reduz o tempo de resposta das consultas e aumenta o throughput do sistema.

Casos de uso:

  • Tabelas com dados estáticos ou modificações pouco frequentes.

  • Cargas de trabalho com consultas SELECT idênticas e frequentes.

  • Consultas que retornam conjuntos de resultados menores que 1 MB.

Nota

Ativar o cache de consultas não garante melhoria de desempenho. Em alguns cenários, como cargas de trabalho com muitas consultas exclusivas, essa ativação pode degradar o desempenho.

Funcionamento

O ApsaraDB RDS for MySQL calcula um hash para cada consulta SELECT recebida e usa esse valor para localizar um resultado correspondente no cache de consultas.

Quando há uma correspondência (cache hit), o servidor retorna o conjunto de resultados armazenado diretamente ao cliente, sem analisar ou executar a consulta.

Se nenhuma correspondência for encontrada (cache miss), o servidor executa a consulta e armazena o hash e o conjunto de resultados no cache de consultas.

Caso os dados sejam alterados em uma tabela usada por uma consulta em cache, o ApsaraDB RDS for MySQL invalida todos os resultados relacionados no cache de consultas.

Limitações

  • As consultas precisam ser idênticas byte a byte para gerar um cache hit. Qualquer diferença, inclusive em maiúsculas/minúsculas, espaços em branco, banco de dados selecionado, versão do protocolo ou conjunto de caracteres, faz com que as consultas sejam tratadas como distintas.

  • O cache de consultas não armazena resultados de subconsultas, apenas o conjunto de resultados final da consulta externa.

  • Consultas dentro de funções armazenadas, procedimentos armazenados, gatilhos ou eventos não são armazenadas em cache.

  • Consultas com funções não determinísticas, como now(), curdate(), last_insert_id() e rand(), não são armazenadas em cache.

  • Consultas que acessam tabelas nos bancos de dados de sistema mysql, information_schema ou performance_schema não são armazenadas em cache.

  • Consultas que usam tabelas temporárias não são armazenadas em cache.

  • Consultas que geram avisos não são armazenadas em cache.

  • Os seguintes tipos de consulta não são armazenados em cache: SELECT ... LOCK IN SHARE MODE, SELECT ... FOR UPDATE e SELECT * FROM ... WHERE autoincrement_col IS NULL.

  • Consultas que usam variáveis definidas pelo usuário não são armazenadas em cache.

  • Consultas que incluem a dica SQL_NO_CACHE não são armazenadas em cache.

Configuração

  • Configurações de parâmetros

    Configure os parâmetros do console conforme descrito abaixo.

    • query_cache_limit (Unidade: byte): Tamanho máximo de um único conjunto de resultados de consulta armazenável no cache de consultas. O valor padrão é 1 MB. Conjuntos de resultados maiores que esse valor não são armazenados em cache.

    • query_cache_size (Unidade: byte): Tamanho total do cache de consultas. O valor padrão é 3 MB.

    • query_cache_type: Define se o cache de consultas deve ser ativado.

      0: Desativa o cache de consultas.

      1: Ativa o cache de consultas. Consultas iniciadas com SELECT SQL_NO_CACHE não são armazenadas em cache.

      2: Ativa o cache de consultas para uso sob demanda. Apenas consultas iniciadas com SELECT SQL_CACHE são armazenadas em cache. No painel de navegação à esquerda, clique em Parameter Settings. Na lista de parâmetros, localize e modifique query_cache_type para o valor desejado. Essa alteração exige a reinicialização da instância. Também é possível modificar parâmetros relacionados, como query_cache_limit (intervalo: 1 a 1.048.576) e query_cache_size (intervalo: 0 a 104.857.600). Para obter uma descrição detalhada de um parâmetro, clique no ícone de informações ao lado dele.

    Importante
    • Alterar o parâmetro query_cache_type exige a reinicialização da instância, que ocorre automaticamente após você aplicar a mudança.

    • O valor do parâmetro query_cache_size deve ser múltiplo de 1024. Caso contrário, o sistema retorna o erro "The specified parameter is invalid" com o código de erro InvalidParameters.Malformed.

  • Enable

    O cache de consultas é ativado quando query_cache_size é maior que 0 e query_cache_type está definido como 1 ou 2.

  • Disable

    Para desativar o cache de consultas, defina query_cache_size como 0 ou query_cache_type como 0.

  • Recommendations

    • Evite definir query_cache_size com valores muito altos. Um cache grande consome memória que outros componentes da instância poderiam usar e também aumenta a sobrecarga de busca no cache. Recomendamos definir um valor inicial entre 10 MB e 100 MB com base nas especificações da sua instância e ajustá-lo posteriormente conforme o uso em tempo de execução.

    • Recomendamos ajustar query_cache_size para ativar ou desativar o cache de consultas, pois modificar query_cache_type exige a reinicialização da instância.

    • O cache de consultas é adequado apenas para cenários específicos. Recomendamos testá-lo exaustivamente antes de ativá-lo em ambiente de produção para evitar possível degradação de desempenho.

Verificar os resultados

  • No Console, escolha Database Autonomy Service (DAS) > Performance Trends no painel de navegação à esquerda. Visualize o gráfico MySQL CPU/Memory Utilization para confirmar se a utilização da CPU e da memória está dentro dos intervalos normais.

  • SQL command

    Execute o seguinte comando para verificar o status do cache de consultas:

    show global status like ‘Qca%’;
    • Qcache_hits: Número de acertos no cache.

    • Qcache_inserts: Quantidade de consultas adicionadas ao cache.

    • Qcache_not_cached: Total de consultas não armazenáveis em cache.

    • Qcache_queries_in_cache: Número de consultas presentes atualmente no cache de consultas.

    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      |
    +-------------------------+------------+