Hacker News

Três camadas de cache entre seleção e disco

Três camadas de cache entre seleção e disco Esta exploração se aprofunda em três, examinando sua importância e impacto potencial. - Sistema operacional Mewayz Business.

8 minutos de leitura

Mewayz Team

Editorial Team

Hacker News

Quando seu aplicativo dispara uma instrução SELECT, essa consulta quase nunca atinge um disco giratório ou mesmo um armazenamento flash bruto — ela passa por três camadas de cache distintas que determinam silenciosamente se sua resposta chega em microssegundos ou milissegundos. Compreender essas camadas é a diferença entre uma plataforma de negócios que pode ser dimensionada sem esforço e outra que cede à carga do mundo real.

O que acontece no momento em que uma consulta SELECT sai do seu aplicativo?

No momento em que seu aplicativo envia uma consulta SELECT, ele entra em um pipeline que a maioria dos desenvolvedores nunca inspeciona. O mecanismo de banco de dados intercepta a solicitação antes que qualquer E/S ocorra, analisando o SQL em um plano de execução interno e consultando imediatamente sua primeira linha de defesa: o cache de resultados da consulta. Se uma consulta idêntica com parâmetros idênticos foi executada recentemente, o mecanismo poderá retornar um conjunto de resultados em cache sem tocar em uma única página de dados. Às vezes, isso é chamado de cache de consulta ou cache de resultados e, em cargas de trabalho de alta leitura e baixa gravação, como painéis de análise e módulos de relatórios, pode eliminar totalmente a grande maioria das leituras de disco.

O ponto crítico aqui é que o cache de consulta é altamente sensível a mutações de dados. Qualquer INSERT, UPDATE ou DELETE na tabela subjacente invalida os resultados relevantes armazenados em cache. É por isso que os sistemas transacionais com uso intenso de gravação geralmente desativam totalmente o cache de consulta e, em vez disso, dependem das camadas mais profundas.

O que é o buffer pool e por que ele é mais importante do que você pensa?

A segunda camada de cache — e sem dúvida a mais importante em sistemas de produção — é o buffer pool (chamado de buffer compartilhado no PostgreSQL, buffer pool do InnoDB no MySQL). Esta é uma região da RAM que o mecanismo de banco de dados usa para armazenar páginas de dados acessadas recentemente. Quando uma consulta não pode ser atendida a partir do cache de resultados, o mecanismo verifica se as páginas de dados necessárias já residem no conjunto de buffers antes de emitir qualquer leitura de disco.

O buffer pool opera com base no princípio da localidade temporal e espacial: os dados acessados ​​recentemente provavelmente serão acessados ​​novamente, e os dados armazenados perto dos dados acessados ​​provavelmente serão acessados ​​em breve. Os administradores de banco de dados ajustam o tamanho do buffer pool como uma das decisões de configuração de maior aproveitamento que tomam. Um buffer pool muito pequeno causa remoção constante de páginas, produzindo um fenômeno chamado thrashing, em que o sistema gasta mais tempo gerenciando falhas de cache do que executando consultas.

Insight principal: na maioria das cargas de trabalho OLTP, um buffer pool bem dimensionado significa que 95–99% de todas as leituras de dados são atendidas pela RAM. O conjunto de trabalho – o subconjunto de seus dados que as consultas realmente acessam com frequência – geralmente é muito menor que o tamanho total do banco de dados. Dimensionar seu buffer pool para caber em seu conjunto de trabalho, e não em todo o conjunto de dados, é a única ação de ajuste de maior retorno que você pode realizar.

💡 VOCÊ SABIA?

O Mewayz substitui 8+ ferramentas de negócios em uma única plataforma.

CRM · Faturamento · RH · Projetos · Agendamentos · eCommerce · PDV · Analytics. Plano gratuito para sempre disponível.

Comece grátis →

Como o cache do sistema operacional preenche a lacuna entre a RAM e o disco?

Mesmo quando o buffer pool do próprio banco de dados falha, uma consulta ainda não está destinada a uma verdadeira leitura do disco. O sistema operacional mantém um cache de página (também chamado de cache do sistema de arquivos), uma região de RAM gerenciada pelo kernel que armazena leituras e gravações em dispositivos de bloco. Quando o mecanismo de banco de dados solicita uma página que está ausente de seu buffer pool, o kernel do sistema operacional verifica seu próprio cache de página antes de emitir um comando de E/S físico para o controlador de armazenamento.

Essa terceira camada é praticamente invisível para os desenvolvedores de aplicativos, mas é profundamente importante em sistemas onde o buffer pool do banco de dados está subprovisionado. O cache da página do sistema operacional é compartilhado por todos os processos, portanto, compete com o servidor de aplicativos, servidor web e qualquer outro software em execução no mesmo host. Em servidores de banco de dados dedicados, essa competição é mínima e o cache do sistema operacional fornece um buffer significativo de segunda chance. Em hosts compartilhados ou contêineres com limites de memória restritos, o cache do sistema operacional geralmente é pequeno demais para ajudar.

Qual camada de cache é responsável pelos maiores ganhos de desempenho na prática?

Em sistemas de produção do mundo real, o buffer pool domina o desempenho

Frequently Asked Questions

Does disabling the query cache always improve database performance?

Not always, but for write-heavy workloads it typically does. The query cache requires a global mutex to maintain consistency, which becomes a bottleneck under high concurrency. MySQL 8.0 removed the query cache entirely for this reason. PostgreSQL never implemented a built-in query cache, relying instead on the buffer pool and application-layer caching. If your read-to-write ratio is high and your queries are highly repetitive, a query cache can deliver real gains — otherwise, invest that tuning effort in the buffer pool.

How do I know if my buffer pool is sized correctly?

Monitor your buffer pool hit ratio: the percentage of page requests served from the pool versus those requiring a disk read. A hit ratio below 95% on an OLTP workload is a signal to increase pool size. In MySQL, query SHOW ENGINE INNODB STATUS and look at the buffer pool hit rate. In PostgreSQL, the pg_statio_user_tables view exposes heap blocks read from disk versus served from the buffer pool. Aim to keep your entire working set — not your full dataset — resident in RAM.

What is the relationship between cache layers and multi-tenant SaaS reliability?

In multi-tenant SaaS, cache layers prevent "noisy neighbor" problems where one tenant's heavy query load degrades performance for all other tenants. Tenant-aware application caching with TTL-based invalidation keeps per-tenant hot data in Redis, drastically reducing buffer pool pressure from large accounts. Database-level connection pooling combined with a warm buffer pool ensures that burst activity from any single account does not flush shared pages from cache and cause latency spikes across the platform.


Cache layers are not database trivia — they are the architectural foundation that separates platforms that stay fast at scale from those that require constant infrastructure firefighting. If you are building or running a business that needs a platform already optimized for these realities, explore Mewayz at app.mewayz.com — 207 modules, one coherent platform, built to perform reliably from your first user to your hundred-thousandth.

Experimente o Mewayz Gratuitamente

Plataforma tudo-em-um para CRM, faturamento, projetos, RH e mais. Não é necessário cartão de crédito.

Related Guide

Guia de Gestão de RH →

Gerencie sua equipe com eficácia: perfis de funcionários, gestão de licenças, folha de pagamento e avaliações de desempenho.

Comece a gerenciar seu negócio de forma mais inteligente hoje

Junte-se a 30,000+ empresas. Plano gratuito para sempre · Não é necessário cartão de crédito.

Pronto para colocar isso em prática?

Junte-se a 30,000+ empresas usando o Mewayz. Plano gratuito permanente — cartão de crédito não necessário.

Iniciar Teste Gratuito →

Ready to take action?

Inicie seu teste gratuito do Mewayz hoje

Plataforma de negócios tudo-em-um. Cartão de crédito não necessário.

Comece grátis →

Teste grátis de 14 dias · Sem cartão de crédito · Cancele a qualquer momento