
Suponha que a memória seja suficiente,
como o MySQL determina se deve buscar no cache ou consultar novamente?
Responder1
AFAIK mysql expira automaticamente, seus caches quando a tabela muda (inserções, atualizações, exclusões, etc)
O mysql geralmente armazena em cache imediatamente com base em query_cache_limit e tamanho, o query_cache_limit padrão é 1M, portanto, se a consulta individual for maior, ela não será armazenada em cache, a menos que você a altere.
Você também deve certificar-se de que sua consulta seja igual, pois leva em consideração consultas que diferenciam maiúsculas de minúsculas.
Além disso, você pode usar o seguinte comando para monitorá-lo:
SHOW STATUS LIKE '%qcache%';
Então, por exemplo, crie uma tabela com algumas entradas e execute:
SELECT id,name FROM my_table WHERE id > '2'; SHOW STATUS LIKE '%qcache%';
Você notará que o número de consultas armazenadas em cache aumentou em 1, agora execute a mesma seleção novamente e verá que o mysql já estará usando o cache e o resultado ocorrerá muito mais rápido.
INFORMAÇÕES ADICIONAIS
Primeiro você deve ter certeza de que possui query-cache-type = 1
my.cnf ou my.ini dependendo do SO/INSTALAÇÃO.
No mysql você pode executar o seguinte comando para verificar o status dele:
SHOW VARIABLES LIKE '%query_cache%';
Ao listar os dados você verá o tamanho do cache de consulta, se estiver definido como 0 significa que seu cache de consulta está desabilitado, esta variável determina a memória, em bytes, usada para o cache de consulta.
Assim como você fez para o tipo de cache de consulta, adicione o seguinte ao seu my.cnf ou my.ini:
query-cache-size = 40M