Usando o cache de consultas no MySQL

7 Comente abaixo Jonathan Lamim (@jlamim)

Qual desenvolvedor não quer ter um bom desempenho em suas consultas MySQL? Pensando nisso é que resolvi escrever esse simples artigo mostrando como otimizar o desempenho das consultas usando o cache de consultas MySQL.

Qual desenvolvedor não quer ter um bom desempenho em suas consultas MySQL? Pensando nisso é que resolvi escrever esse simples artigo mostrando como otimizar o desempenho das consultas usando o cache de consultas MySQL.

Para começar é preciso alterar algumas linhas no arquivo de configuração do MySQL.


query-cache-type = 1

Onde:
0 - disable/off
1 - enabled/on
2 - on demand

Em seguida altere a linha abaixo para definir o tamanho do cache a ser armazenado, que no exemplo é de 25Mb.

Se você utilizar "query-cache-type = 2" você terá que modificar a instrução SQL da sua query, informando que quer selecionar os resultados que estão em cache, como mostra o exemplo abaixo.

SELECT SQL_CACHE campo1, campo2, campo3 FROM tabela1 WHERE campo1 = "parametro";


Para verificar se o servidor mysql já está permitindo operações com cache de consultas, execute a instrução SQL abaixo:

SHOW VARIABLES LIKE '%query_cache%';


O resultado retornado deve ser:

+——————-+———+
| Variable_name | Value |
+——————-+———+
| have_query_cache | YES |
| query_cache_limit | 1048576 |
| query_cache_size | 20971520 |
| query_cache_type | ON |
+——————-+———+
 
4 rows in set (0.06 sec)


Visto que o servidor já está operando com o cache de consultas, é hora de ver se as suas consultas já estão sendo armazenadas em cache. Execute uma consulta SQL por 2 vezes e em seguida execute a instrução abaixo:

SHOW STATUS LIKE ?%qcache%?;

O resultado:

+———+—-+
| Variable_name | Value | | Variable_name | | Valor
+————————-+———-+ +———+—-+
| Qcache_queries_in_cache | 1 | Qcache_queries_in_cache | | 1 |
| Qcache_inserts | 3 | Qcache_inserts | | 3 |
| Qcache_hits | 0 | Qcache_hits | | 0 |
| Qcache_lowmem_prunes | 0 | Qcache_lowmem_prunes | | 0 |
| Qcache_not_cached | 2 | | Qcache_not_cached | 2 |
| Qcache_free_memory | 20947592 | | | Qcache_free_memory 20947592 |
| Qcache_free_blocks | 1 | Qcache_free_blocks | | 1 |
| Qcache_total_blocks | 4 | Qcache_total_blocks | | 4 |
+————————-+———-+ +———+—-+ 


A primeira consulta que você executar vai demorar mais que a segunda, pois ela ainda não está armazenada no cache, já na segunda vez que executar, o tempo será menor, pois o MySQL irá pegar a consulta que está no cache.

Veja também em: http://jlamim.com.br

Recomendamos para você
 

Compartilhe com seus amigos:
Mais de MySQL
  • MySQL - Diferença entre InnoDB e MyISAM
    MySQL - Diferença entre InnoDB e MyISAM
  • MySQL: Como converter InnoDB para MyISAM
    MySQL: Como converter InnoDB para MyISAM
  • Como converter MySQL para Sphinx
    Como converter MySQL para Sphinx
  • Limitações MySQL Parte 4: Um thread por conexão
    Limitações MySQL Parte 4: Um thread por conexão
  • Limitações MySQL Parte 3: Subconsultas
    Limitações MySQL Parte 3: Subconsultas
Compartilhe com seus amigos:
últimos reviews
  • 8,4
    Review Samsung Galaxy K Zoom
    Nessas 2 últimas semanas passou por nossas mãos o potente Galaxy K Zoom, veja o que achamos dele.
  • 8,6
    Review Moto X - Segunda geração
    O aparelho da Motorola é a prova “viva” que o que está ótimo pode melhorar ainda mais.
  • 8,1
    Review Zenfone 5
    Tela de 5 polegadas, câmera de foto e vídeo superiores aos concorrentes, boa usabilidade e preço baixo. A Asus acertou n...

TOPO