CADASTRE-SE

0 Categoria: Artigos » MySQL

Usando o cache de consultas no MySQL

Por Jonathan Lamim
Data:

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

Leia a seguir: MySQL: Usando Expressões Regulares no SELECT



Recomendados para você
Ainda restam dúvidas? Pergunte aqui em nosso fórum



Comentários:

TOPO