O cache de consulta do MySQL de fato armazena em cache os resultados da consulta e como Enquanto as consultas subsequentes forem exatamente iguais, o resultado calculado será fornecido em vez de executar a consulta. O MySQL também irá ignorar o cálculo do plano de execução.
Para usá-lo, você pode ativá-lo my.cnf
do seu servidor ou use a dica SQL_CACHE na frente de suas consultas. Se você o tiver ativado no my.cnf, você pode dizer ao MySQL para não armazenar em cache um resultado usando SQL_NO_CACHE na frente de suas consultas.
Qualquer gravação (INSERT, UPDATE, DELETE, etc.) em uma tabela invalidará todas as entradas no cache de consulta que vieram dessa tabela.
Uma anomalia de desempenho com o cache de consulta: ele usa um algoritmo ineficiente para localizar entradas no cache, de modo que criar um cache maior pode resultar em pior desempenho . Você deve experimentar alterá-lo com seus próprios dados e perfis de consulta, mas a última vez que fiz esse experimento, descobri que cerca de 256 MB era o ponto ideal. Maior ou menor que isso e o desempenho piorou. O manual sugere " Dezenas de megabytes "
Você também pode implementar o cache fora do MySQL usando algo como memcached . Isso não é transparente para o aplicativo, portanto, você terá que adicionar código extra em seu aplicativo para lidar com a pesquisa no memcached e, em seguida, se falhar, fazer a pesquisa no banco de dados e armazenar o resultado no memcached.