Melhor resposta
Como Scott McNulty respondeu anteriormente a esta pergunta, cache SQL é o armazenamento de conjuntos de resultados gerados como resultado de uma consulta em um banco de dados e usando a cópia do resultado para resultados posteriores. Dito isso, há MUITO mais para esse problema do que apenas “cache”. O verdadeiro problema não é o cache, é a invalidação que é a parte difícil. Armazenar informações não é difícil, saber quando elas são inválidas é.
Há também um segundo problema mais sutil envolvido no cache, que é o impacto da latência de rede do cache. A maioria das soluções de cache opera como um servidor independente, bem como um banco de dados. Para consultar o cache, uma viagem de ida e volta pela rede precisa ser realizada, novamente, como em um banco de dados. Se o cache não tiver a resposta confiável E responder mais rápido do que o banco de dados, será muito difícil realmente melhorar o desempenho com o cache.
Para armazenar o SQL em cache de maneira ideal, você precisa de uma solução que possa resolver vários problemas:
- Qual conteúdo deve ser armazenado em cache?
- Se houver um resultado armazenado em cache, ele deve ser considerado inválido?
- Se o cache atingir taxa é muito baixa, a lógica do cache se ajustará automaticamente para parar de armazenar em cache e parar de fazer pesquisas para evitar a penalidade?
A realidade é que, para levar em conta a maioria dos casos esquivos, é muito complexo conjunto de lógica para garantir um cenário de desempenho de melhor caso para armazenamento em cache. Isso não é tão simples quanto implementar um mecanismo de cache como Redis ou Hazelcast em seu aplicativo . Em vez disso, você precisa de um mecanismo de cache inteligente que possa inspecionar quais dados estão sendo alterados, invalidar dados automaticamente e, de outra forma, otimizar as solicitações que podem ser feitas a um mecanismo de cache externo em comparação com o que está sendo feito no banco de dados.
Um desses mecanismos é da Heimdall Data (isenção de responsabilidade, eu sou o CTO da Heimdall Data). O mecanismo Heimdall armazena automaticamente em cache o conteúdo direcionado do aplicativo para o banco de dados como um driver JDBC ou como um proxy de nível de protocolo, invalida o conteúdo automaticamente e otimiza o conteúdo armazenado em cache também. Isso permite que os desenvolvedores se concentrem nos recursos, não no cache, o que em alguns casos pode economizar de 20 a 40\% do tempo de desenvolvimento e depuração de um aplicativo.
Resposta
O cache em geral é armazenamento os resultados de um processo que consome muitos recursos para que os recursos não tenham que ser gastos novamente.
Em SQL; é sempre específico para a tecnologia do fornecedor. MS-SQL, Oracle, MySQL e PostGres têm diferentes opções para o que armazenam em cache. Os resultados, a consulta e até mesmo o plano de execução da consulta podem ser armazenados para uso por tentativas posteriores de processar as mesmas informações.
No caso de os dados subjacentes serem alterados, o sistema geralmente possui um mecanismo para indicar que as informações em cache estão “sujas” e não podem mais ser utilizadas; para que a consulta possa ser executada novamente pelo sistema.
Você vê isso o tempo todo. Quanto tempo leva minha consulta? Por que é sempre mais rápido se eu executá-lo uma segunda vez? Bem, é por isso. O sistema lembra com eficiência o que você perguntou antes e dá a resposta que lembra daquela época.