- 1 1. Introdução
- 2 2. Arquitetura de Cache por Versão do MySQL
- 3 3. Como Limpar o Cache de Consulta (Para MySQL 5.7 e Anteriores)
- 4 4. Limpando o Cache de Tabelas e Caches Relacionados
- 5 5. Como “Limpar” o Buffer Pool do InnoDB (Para MySQL 8.0)
- 6 6. Controle de Cache usando ferramentas de terceiros
- 7 7. Riscos e Precauções
- 8 8. Resumo do Procedimento (Tabela de Referência Rápida)
- 9 9. FAQ (Perguntas Frequentes)
- 9.1 Q1. O Cache de Consulta e o Buffer Pool do InnoDB são a mesma coisa?
- 9.2 Q2. Quanto o desempenho cai após limpar o cache?
- 9.3 Q3. É seguro limpar caches em um ambiente de produção?
- 9.4 Q4. Posso habilitar o Cache de Consulta no MySQL 8.0?
- 9.5 Q5. Posso limpar caches em serviços de nuvem como AWS RDS ou Cloud SQL?
- 9.6 Q6. Existe uma maneira de limpar caches automaticamente?
- 10 10. Resumo e Melhores Práticas
1. Introdução
MySQL é um dos bancos de dados mais amplamente usados em serviços e sistemas web ao redor do mundo. Para melhorar o desempenho e reduzir a carga do servidor, o MySQL oferece diversos mecanismos de cache. No entanto, em ambientes de desenvolvimento e produção, problemas como “os dados mais recentes não são refletidos devido ao cache” ou “cache antigo interfere nas alterações de configuração ou na depuração” não são incomuns.
Nessas situações, limpar (excluir ou redefinir) o cache do MySQL torna‑se extremamente útil. Por exemplo, essa operação é eficaz quando você deseja verificar imediatamente os dados atualizados em um ambiente de teste, limpar o cache antes de fazer um snapshot ou forçar a redefinição de dados em cache que permaneceram inadvertidamente.
Este artigo destina‑se a quem tem interesse em “limpar cache MySQL” e explica as características e os métodos de limpeza de cada tipo de cache de forma fácil de entender. Além disso, abordamos diferenças nas especificações de cache dependendo da versão do MySQL, considerações operacionais, perguntas comuns e suas soluções.
Ao compreender adequadamente como o cache funciona e como limpá‑lo, você poderá usar o MySQL de forma mais estável e eficiente.
2. Arquitetura de Cache por Versão do MySQL
Os recursos de cache do MySQL diferem significativamente conforme a versão. Em particular, a filosofia de design do cache mudou entre o MySQL 5.7 (e anteriores) e o MySQL 8.0 (e posteriores). Aqui, resumimos os principais tipos de caches usados no MySQL e as diferenças por versão.
2.1 Cache de Consulta (MySQL 5.7 e Anteriores)
No MySQL 5.7 e versões anteriores, um recurso chamado “Cache de Consulta” era incluído por padrão. Esse mecanismo armazena instruções SELECT executadas e seus conjuntos de resultados na memória, permitindo que a mesma consulta retorne resultados rapidamente se for executada novamente. Embora possa ser eficaz em serviços web simples, em ambientes com atualizações frequentes de dados o cache é invalidado com frequência, o que pode, ao contrário, causar degradação de desempenho.
2.2 Buffer Pool do InnoDB (MySQL 5.5–8.0)
Desde o MySQL 5.5, e especialmente no MySQL 8.0, o “Buffer Pool do InnoDB” tornou‑se o mecanismo central de cache. Esse recurso permite que o mecanismo de armazenamento InnoDB retenha dados e informações de índice na memória para reduzir I/O de disco e melhorar o desempenho. Diferente do Cache de Consulta, o buffer pool faz cache de dados ao nível de tabela ou linha, proporcionando desempenho estável mesmo em sistemas de grande escala ou ambientes com atualizações frequentes.
2.3 Cache de Tabelas e Outros Caches
Além disso, o MySQL inclui vários outros mecanismos de cache, como “Cache de Tabelas (table_open_cache)”, “Cache de Threads” e “Cache de Variáveis de Usuário”. Em particular, o Cache de Tabelas gerencia de forma eficiente tabelas acessadas com frequência e está disponível em todas as versões.
2.4 Resumo das Especificações de Cache por Versão
- MySQL 5.7 e anteriores : Cache de Consulta + Buffer do InnoDB + Cache de Tabelas
- MySQL 8.0 e posteriores : Cache de Consulta removido, Buffer Pool do InnoDB é o principal, Cache de Tabelas continua
Conforme mostrado acima, os tipos e papéis dos caches mudam dependendo da versão do MySQL. Portanto, é importante entender as medidas adequadas para a versão que você está usando.
3. Como Limpar o Cache de Consulta (Para MySQL 5.7 e Anteriores)
Se você está usando MySQL 5.7 ou anterior, o recurso “Cache de Consulta” costuma estar habilitado. Nesta seção, explicamos como o Cache de Consulta funciona, como limpá‑lo e quais precauções são importantes.
3.1 O que é o Cache de Consulta?
O Cache de Consulta armazena instruções SELECT e seus conjuntos de resultados na memória e, quando a mesma consulta é executada novamente, devolve imediatamente o resultado do cache. É eficaz principalmente para sites ou aplicações de pequena escala que referenciam dados estáticos com frequência. Contudo, em ambientes onde os dados são atualizados frequentemente, o cache torna‑se menos eficaz, sendo necessário cautela.
3.2 Comandos para Limpar o Cache de Consulta
Para limpar o Cache de Consulta, os dois comandos a seguir são os principais usados.
RESET QUERY CACHE;Este comando exclui todas as entradas no Cache de Consultas. Como todas as consultas e conjuntos de resultados em cache são removidos, é útil quando você deseja eliminar completamente os efeitos do cache.FLUSH QUERY CACHE;Este comando exclui apenas as entradas “não usadas” no cache. É adequado quando você deseja limpar apenas as entradas antigas que já foram invalidadas.
3.3 Como Executar os Comandos
Execute os comandos a partir de um cliente MySQL ou de uma ferramenta de administração (como o phpMyAdmin) da seguinte forma.
RESET QUERY CACHE;
Ou:
FLUSH QUERY CACHE;
Alguns casos requerem privilégios. Se você receber um erro de permissão, execute o comando novamente com privilégios administrativos (como root).
3.4 Precauções e Melhores Práticas
- Limpar o Cache de Consultas afeta todo o servidor, portanto execute com cuidado em um ambiente de produção.
- Após limpar o cache, o desempenho pode diminuir temporariamente.
- No MySQL 8.0 e posteriores, o recurso de Cache de Consultas foi removido, portanto esses comandos não podem ser usados.
Ao limpar o Cache de Consultas de forma eficaz, você pode evitar efeitos de cache não intencionais e permitir a verificação precisa dos dados mais recentes e do comportamento correto.
4. Limpando o Cache de Tabelas e Caches Relacionados
O MySQL inclui vários mecanismos de cache além do Cache de Consultas. Em particular, o “Cache de Tabelas” é usado para gerenciar tabelas acessadas com frequência de forma eficiente. Este capítulo explica como limpar o Cache de Tabelas e caches relacionados.
4.1 O que é o Cache de Tabelas?
O Cache de Tabelas (table_open_cache) é um mecanismo onde o MySQL mantém as tabelas abertas internamente para evitar carregá‑las repetidamente do disco a cada acesso. Ele ajuda a melhorar o desempenho quando muitos usuários ou aplicações acessam o banco de dados simultaneamente.
4.2 Como Limpar o Cache de Tabelas
Para limpar o Cache de Tabelas, você usa principalmente o comando FLUSH TABLES.
FLUSH TABLES;
Ao executar este comando, o MySQL fecha todas as tabelas atualmente abertas de uma vez e as reabre conforme necessário. Isso reinicia o conteúdo do Cache de Tabelas e é útil para aplicar alterações na definição das tabelas ou resolver problemas causados pelo cache.
4.3 Limpando Outros Caches Relacionados
O MySQL fornece comandos para limpar vários caches além do Cache de Tabelas. Exemplos incluem o seguinte.
- FLUSH TABLES WITH READ LOCK; Fecha todas as tabelas e as coloca em estado bloqueado, o que pode ser usado para backups e operações semelhantes.
- FLUSH PRIVILEGES; Limpa o cache das tabelas de privilégios (informações de usuário e privilégios) e aplica as alterações de privilégios imediatamente.
- FLUSH STATUS; Reinicia as estatísticas de várias variáveis de status (visíveis via SHOW STATUS, etc.).
4.4 Limpando Vários Caches de Uma Só Vez
Como o comando de limpeza difere dependendo do tipo de cache, se você quiser redefinir vários caches ao mesmo tempo, execute cada comando em sequência. Por exemplo, em um ambiente de desenvolvimento ou teste onde você deseja “resetar todos os caches de uma vez”, você pode combinar comandos assim:
FLUSH TABLES;
RESET QUERY CACHE;
(Isso se aplica ao MySQL 5.7 e anteriores; RESET QUERY CACHE não está disponível no MySQL 8.0 e posteriores.)
4.5 Observações
- Limpar o Cache de Tabelas pode afetar temporariamente o desempenho em sistemas com muitas tabelas abertas.
- Em ambientes de produção, confirme previamente o escopo de impacto antes de executar esses comandos.
- Dependendo dos privilégios, alguns comandos podem não ser executáveis. Se um erro for exibido, execute novamente usando um usuário com os privilégios adequados.
Ao limpar o Cache de Tabelas e caches relacionados adequadamente, você pode tornar as operações do MySQL mais estáveis e simplificar a solução de problemas.
5. Como “Limpar” o Buffer Pool do InnoDB (Para MySQL 8.0)
No MySQL 8.0 e posteriores, o recurso Query Cache foi removido, e o “InnoDB Buffer Pool” desempenha o papel central no cache. No entanto, ao contrário do Query Cache tradicional, o InnoDB Buffer Pool não pode ser “limpo” com um único comando. Este capítulo explica abordagens práticas para limpar efetivamente o InnoDB Buffer Pool e precauções importantes.
5.1 O que é o InnoDB Buffer Pool?
O InnoDB Buffer Pool é um mecanismo que armazena em cache os dados das tabelas, índices e páginas de dados frequentemente acessadas na memória, a fim de reduzir I/O de disco e melhorar o desempenho. No MySQL 8.0, esse buffer pool é o componente chave para otimização de desempenho.
5.2 Como limpar o Buffer Pool e métodos alternativos
Não existe um comando padrão do MySQL que “limpe” diretamente o InnoDB Buffer Pool. As principais abordagens são as seguintes.
- Reiniciar o servidor MySQL Parar e reiniciar o servidor inicializa o conteúdo do buffer pool, limpando efetivamente todos os dados em cache. No entanto, é necessário operar com cautela em ambientes de produção.
- Alterar temporariamente o tamanho do Buffer Pool Definindo
innodb_buffer_pool_sizepara um valor menor e reiniciando o MySQL, depois restaurando-o ao valor original e reiniciando novamente, também é possível inicializar o buffer pool. - Descarregar páginas individuais do Buffer Pool O comando a seguir grava as páginas modificadas (dirty) do buffer pool no disco, mas não limpa completamente o cache.
FLUSH TABLES;
5.3 Exemplo prático de limpeza do Buffer Pool
Por exemplo, em um ambiente de teste onde você deseja limpar o buffer pool, siga estas etapas:
- Pare o servidor MySQL.
- Ajuste
innodb_buffer_pool_sizese necessário. - Inicie o servidor MySQL.
Isso reinicializa o buffer pool na memória, resultando em um estado onde todas as informações em cache foram removidas.

5.4 Precauções e dicas operacionais
- Inicializar o buffer pool (via reinício do servidor) interrompe temporariamente o serviço, portanto, a coordenação e notificação prévias são essenciais em ambientes de produção.
- Imediatamente após limpar o buffer pool, o acesso ao disco aumenta e o desempenho pode degradar temporariamente. Tenha cautela em sistemas de alto tráfego.
- Se o reinício não for possível, prepare um ambiente de teste ou desenvolvimento separado para o trabalho de verificação.
Ao compreender plenamente como o InnoDB Buffer Pool funciona e realizar reinicializações nos momentos adequados, você pode alcançar operações estáveis mesmo em ambientes MySQL 8.0 e posteriores.
6. Controle de Cache usando ferramentas de terceiros
O gerenciamento de cache do MySQL pode ser tornado mais eficiente e mais fácil de visualizar usando ferramentas e utilitários de terceiros, além dos comandos padrão. Aqui, apresentamos ferramentas representativas e casos de uso práticos.
6.1 Monitoramento e otimização de cache com MySQLTuner
“MySQLTuner” é uma ferramenta de diagnóstico bem conhecida que analisa o estado de um servidor MySQL e fornece automaticamente recomendações para melhorias de desempenho. Ela também apresenta estatísticas de uso e valores de configuração recomendados para caches como o Query Cache, InnoDB Buffer Pool e Table Cache.
Como usar o MySQLTuner:
- Instale o MySQLTuner no seu servidor (distribuído como um script Perl).
- Execute o comando a seguir para realizar o diagnóstico.
perl mysqltuner.pl
- Os resultados exibem itens de diagnóstico como “Query cache” e “InnoDB Buffer Pool”, juntamente com ajustes de parâmetros recomendados ou sugestões para desativar recursos de cache desnecessários, se necessário.
6.2 Usando o Percona Toolkit
“Percona Toolkit” é um conjunto abrangente de ferramentas úteis para operações e análise de desempenho do MySQL. Por exemplo, ele pode gerar relatórios sobre o status do buffer pool e o uso do table cache com um único comando, facilitando o monitoramento de ambientes de grande escala.
6.3 Exemplos de ferramentas de monitoramento e visualização
- phpMyAdmin / MySQL Workbench Essas ferramentas de gerenciamento permitem verificar o status atual do cache e executar alguns comandos FLUSH via interface gráfica. São fáceis de usar e adequadas para monitoramento e tarefas menores de controle de cache.
- Zabbix ou Prometheus Essas ferramentas monitoram o uso de memória do servidor e a utilização do pool de buffers InnoDB, permitindo visualização em tempo real do comportamento do cache e das restrições de recursos. São úteis para detecção precoce de anomalias e alertas automatizados.
6.4 Precauções ao Usar Ferramentas de Terceiros
- Executar essas ferramentas pode exigir privilégios administrativos ou permissões específicas de usuário MySQL.
- Antes de usar as ferramentas em produção, recomenda‑se verificar seu comportamento em um ambiente de teste.
- Algumas ferramentas podem aumentar temporariamente a carga do servidor, portanto considere realizar as operações fora do horário de pico.
Ao aproveitar efetivamente as ferramentas de terceiros, você pode visualizar o estado do cache do MySQL e executar limpezas e otimizações oportunas.
7. Riscos e Precauções
Embora limpar os caches do MySQL seja extremamente útil, fazê‑lo no momento errado ou da maneira errada pode gerar problemas inesperados ou degradação de desempenho. Este capítulo explica os riscos e as precauções que você deve entender antes de limpar os caches.
7.1 Impacto no Desempenho
Após a limpeza dos caches, a carga no servidor MySQL pode aumentar temporariamente. Em particular, se caches grandes como o InnoDB Buffer Pool ou o Table Cache forem limpos, todos os dados em memória são perdidos. Como resultado, ocorre I/O de disco para cada solicitação de cliente, o que pode reduzir significativamente a velocidade de resposta.
7.2 Tenha Muito Cuidado em Ambientes de Produção
Ao limpar caches em um sistema de produção, é necessária cautela especial. Executar comandos durante períodos de pico de tráfego pode impactar negativamente o desempenho geral do sistema e causar interrupções de serviço ou respostas lentas. Em ambientes de produção, validação suficiente, coordenação prévia, backups e timing cuidadoso são essenciais.
7.3 Considere Atualizações de Dados e Consistência
Dependendo do momento da limpeza do cache, podem ocorrer inconsistências de dados ou comportamentos inesperados na aplicação. Por exemplo, se estruturas de tabelas forem modificadas ou um processamento em lote estiver em andamento quando os caches forem limpos, os resultados de consultas ou a lógica da aplicação podem se comportar de forma inesperada.
7.4 Evite Limpezas Desnecessárias de Cache
Evite a prática de “apenas limpar o cache por enquanto”. Os caches do MySQL são projetados para reduzir a carga do servidor e melhorar a velocidade de processamento. Limpezas frequentes podem, ao contrário, tornar o desempenho instável. Sempre assegure que a limpeza do cache seja realizada apenas quando realmente necessária.
7.5 Considerações de Permissão e Segurança
Comandos e ferramentas de limpeza de cache exigem privilégios suficientes. Executá‑los com usuários excessivamente privilegiados pode arriscar afetar outras configurações críticas ou dados. Siga as melhores práticas de segurança, como usar usuários com privilégios mínimos e registrar logs de execução.
Ao compreender esses riscos e precauções, você pode manter o desempenho e a estabilidade do MySQL de forma segura e eficiente.
8. Resumo do Procedimento (Tabela de Referência Rápida)
Abaixo está uma tabela de referência rápida resumindo os procedimentos de limpeza de cache do MySQL apresentados até agora, organizados por tipo de cache e versão do MySQL. Use esta tabela durante operações ou solução de problemas.
| Target Operation | MySQL Version | Example Command / Method | Effect |
|---|---|---|---|
| Query Cache | 5.7 and earlier | RESET QUERY CACHE; FLUSH QUERY CACHE; | Delete all Query Cache entries or only unused entries |
| Table Cache | All versions | FLUSH TABLES; | Clear cache of open tables |
| Privilege Cache | All versions | FLUSH PRIVILEGES; | Clear privilege information cache |
| Status Statistics | All versions | FLUSH STATUS; | Reset SHOW STATUS statistics |
| InnoDB Buffer | 8.0 and later | Server restart Temporary buffer pool size adjustment | Initialize buffer pool (memory cache) |
| Comprehensive Cache | All versions | Execute multiple commands above in combination | Clear cache-related components comprehensively |
Explicação Rápida:
- RESET QUERY CACHE; Reinicia todo o Query Cache (apenas MySQL 5.7 e anteriores).
- FLUSH QUERY CACHE; Exclui apenas as entradas de Query Cache invalidadas e não usadas.
- FLUSH TABLES; Fecha todas as tabelas abertas uma vez e reinicia o Table Cache.
- FLUSH PRIVILEGES; Aplica imediatamente as alterações de privilégios de usuário.
- FLUSH STATUS; Reinicia várias estatísticas de status, útil durante análises de desempenho.
- Initialize InnoDB Buffer Pool Realizado indiretamente via reinício do servidor ou modificação de
innodb_buffer_pool_size(MySQL 8.0 e posteriores).
Usando esta tabela, você pode selecionar rapidamente o procedimento adequado de limpeza de cache com base no seu ambiente e objetivos.
9. FAQ (Perguntas Frequentes)
Abaixo estão as perguntas comuns sobre a limpeza de caches do MySQL que são frequentemente levantadas por operadores e desenvolvedores, juntamente com suas respostas. Use-as como referência prática.
Q1. O Cache de Consulta e o Buffer Pool do InnoDB são a mesma coisa?
A. Não, são mecanismos diferentes. O Cache de Consulta armazena os próprios conjuntos de resultados das consultas SQL, enquanto o Buffer Pool do InnoDB mantém os dados das tabelas e índices na memória. Seus propósitos e mecanismos internos são completamente diferentes, portanto não os confunda.
Q2. Quanto o desempenho cai após limpar o cache?
A. O desempenho diminui temporariamente. Especialmente em ambientes com caches grandes, o acesso ao disco aumenta durante a execução inicial das consultas, o que pode reduzir significativamente a velocidade de resposta. No entanto, o desempenho se recupera gradualmente à medida que o cache é reconstruído.
Q3. É seguro limpar caches em um ambiente de produção?
A. Geralmente não é recomendado. Limpar caches em produção afeta diretamente o desempenho e a estabilidade do serviço. Testes suficientes, preparação e ajustes de timing são essenciais. Se for necessário prosseguir, certifique‑se de notificar as partes interessadas com antecedência e fazer backups.
Q4. Posso habilitar o Cache de Consulta no MySQL 8.0?
A. Não. O recurso de Cache de Consulta foi completamente removido no MySQL 8.0. Se precisar da funcionalidade de Cache de Consulta, deve usar o MySQL 5.7 ou anterior.
Q5. Posso limpar caches em serviços de nuvem como AWS RDS ou Cloud SQL?
A. Sim, mas podem existir restrições dependendo do serviço. Por exemplo, alguns comandos FLUSH ou operações de reinicialização do servidor podem ser limitados no RDS. Sempre verifique a documentação oficial e as diretrizes do console de gerenciamento antes de prosseguir.
Q6. Existe uma maneira de limpar caches automaticamente?
A. Você pode automatizar a execução periódica de comandos FLUSH usando scripts shell ou jobs cron. No entanto, a limpeza frequente de caches não é recomendada. Use a automação apenas quando necessário, como durante manutenções programadas.
Ao revisar estas FAQs antecipadamente, você pode resolver preocupações operacionais e executar tarefas de limpeza de cache do MySQL com maior confiança.
10. Resumo e Melhores Práticas
Limpar caches do MySQL é uma operação essencial em ambientes de desenvolvimento e produção. Neste artigo, abordamos os tipos de cache por versão do MySQL, métodos de limpeza, precauções e perguntas frequentes. Com base nessas informações, aqui estão as principais melhores práticas.
10.1 Use Ativamente a Limpeza de Cache em Ambientes de Teste
Durante testes, validações e depurações, você frequentemente precisa remover os efeitos do cache para verificar o comportamento real. Use os comandos de limpeza de cache adequadamente para melhorar a reprodutibilidade e a precisão dos testes.
10.2 Operar com Cuidado em Produção
Limpar caches em produção pode impactar significativamente o desempenho e a estabilidade. Sempre avalie o escopo de impacto e o timing antes da execução. Notifique as partes relevantes e faça backups quando necessário. Evite realizar a limpeza de cache indiscriminadamente — execute-a apenas quando realmente necessário.
10.3 Compreender Corretamente Versões e Tipos de Cache
Como os mecanismos de cache do MySQL diferem por versão, é importante entender quais caches e métodos de limpeza se aplicam ao seu ambiente. Cada tipo de cache tem comandos e escopos de impacto diferentes, portanto escolha o procedimento mais adequado com base no seu objetivo.
10.4 Aproveitar Ferramentas de Terceiros e de Monitoramento
Ferramentas como MySQLTuner e Percona Toolkit ajudam a avaliar as condições do servidor e a utilização de cache de forma objetiva. Utilize ferramentas de visualização e automação para apoiar operações avançadas e prevenir problemas proativamente.
10.5 Considerações Finais
Quando executado corretamente, a limpeza de cache do MySQL contribui muito para operações de banco de dados estáveis, solução de problemas e melhoria de desempenho. Use este guia para aplicar os métodos de limpeza de cache mais adequados ao seu ambiente e alcançar uma gestão de sistema de alta qualidade.


