Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Quando usar SQL_NO_CACHE


SQL_NO_CACHE

Simplesmente adicione SQL_NO_CACHE após a parte SELECT da instrução SELECT e antes da lista de campos. A primeira consulta abaixo usará o cache de consulta se estiver ativado e a consulta estiver armazenada em cache:
SELECT * FROM table WHERE search= 'keyword'; //lets take 1ms

A segunda consulta abaixo não usará o cache de consulta:
SELECT SQL_NO_CACHE * FROM table WHERE search= 'keyword'; //lets take ~0.2ms at 2nd time

Isso é particularmente útil ao comparar uma consulta; se o cache de consulta estiver ativado, embora a primeira consulta possa levar algum tempo, a segunda e as consultas subsequentes serão quase instantâneas. Com o uso de SQL_NO_CACHE, você pode ter certeza de que o cache de consulta não é usado e pode comparar com segurança os tempos de resultado. A dica SQL_NO_CACHE desativa o mecanismo de cache de consulta interno do MySQL para uma consulta específica. Você pode ajudar o MySQL a tornar o cache de consulta mais eficiente usando esta dica em consultas que são altamente dinâmicas (como uma pesquisa por palavra-chave ou um relatório que é executado apenas à noite). comando.

qual SQL_CACHE e SQL_NO_CACHE?

As opções SQL_CACHE e SQL_NO_CACHE afetam o armazenamento em cache dos resultados da consulta no cache de consulta. SQL_CACHE diz ao MySQL para armazenar o resultado no cache de consulta se for armazenável em cache e o valor da variável de sistema query_cache_type for 2 ou DEMAND. Com SQL_NO_CACHE, o servidor não usa o cache de consulta. Ele não verifica o cache de consulta para ver se o resultado já está armazenado em cache, nem armazena em cache o resultado da consulta. (Devido a uma limitação no analisador, um caractere de espaço deve preceder e seguir a palavra-chave SQL_NO_CACHE; um não espaço, como uma nova linha, faz com que o servidor verifique o cache de consulta para ver se o resultado já está armazenado em cache.)

NO_CACHE de acordo com minha opinião pode ser usado se 'CACHE' estiver habilitado e os dados no banco de dados forem atualizados dinamicamente, ou seja, o cache de dados do banco de dados não pode ser confiável, por exemplo:armazenando o hash da senha do usuário, não podemos confiar no CACHE, pois é frequente possibilidade de alteração de dados

Atualizações de cenários úteis

1) forçar a não usar o cache para testar a velocidade da consulta