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.

5 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.

💡 VOCÊ SABIA?

A Mewayz substitui 8+ ferramentas empresariais numa única plataforma

CRM · Faturação · RH · Projetos · Reservas · eCommerce · POS · Análise. Plano gratuito para sempre disponível.

Comece grátis →

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.

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 domi

All Your Business Tools in One Place

Stop juggling multiple apps. Mewayz combines 207 tools for just $19/month — from inventory to HR, booking to analytics. No credit card required to start.

Try Mewayz Free →

Experimente o Mewayz Gratuitamente

Plataforma tudo-em-um para CRM, faturação, projetos, RH e muito mais. Cartão de crédito não necessário.

Guia Relacionado

Guia de Gestão de RH →

Gerencie sua equipe com eficiência: 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

Присоединяйтесь к 30,000+ компаниям. Бесплатный тариф навсегда · Без банковской карты.

Pronto para colocar isto em prática?

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

Iniciar Teste Gratuito →

Pronto para agir?

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 gratuito de 14 dias · Sem cartão de crédito · Cancele a qualquer momento