Uma das maneiras de fazer com que sua aplicação web funcione mais rapidamente, é permitir que o cache da sua base de dados use SQL. Você terá que sacrificar apenas um pouco de memória, mas em contrapartida, terá muito mais agilidade.
A primeira coisa da qual você precisa ter certeza, é que seu MySQL tenha suporte para Query Caching (ou cache de consulta). A maioria tem, mas é sempre bom checar. Para isso, diretamente do MySQL, utilize o comando "have_query_cache":
mysql> show variables like 'have_query_cache'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | have_query_cache | YES | +------------------+-------+
Em seguida, será necessário verificar se o Query Caching está ativado. Para isso, você utilizará o comando "query%"
mysql> show variables like 'query%'; +------------------------------+---------+ | Variable_name | Value | +------------------------------+---------+ | query_alloc_block_size | 8192 | | query_cache_limit | 1048576 | | query_cache_min_res_unit | 4096 | | query_cache_size | 8388608 | | query_cache_type | ON | | query_cache_wlock_invalidate | OFF | | query_prealloc_size | 8192 | +------------------------------+---------+
O que algumas dessas coisas significam?
- query_cache_size – É o tamanho do seu cache em bytes. Se você alterar esse valor para zero, irá desativar seu cache.
- query_cache_type – Se ON ou 1 estiverem nessa coluna, significa que o Query Chaching está ativado.
- query_cache_limit – Esse é o limite máximo em bytes do seu query.
Se o valor query_cache_size estiver marcado como zero, ou se você quiser altera-lo, será necessário utilizar um comando e inserir esses valores em bytes. O cálculo é bem simples, digamos que você queira alocar 8MB ao cache, você multiplica 1024x1024x8, que dá 8388608, o valor em bytes do cache. E então insere o comando da seguinte maneira:
SET GLOBAL query_cache_size = 8388608;
Altere as outras opções utilizando esses comandos:
SET GLOBAL query_cache_limit = 1048576;SET GLOBALquery_cache_type
= 1;
Para saber se tudo está funcionando normalmente, você pode utilizar o comando "Qc%".
mysql> SHOW STATUS LIKE 'Qc%'; +-------------------------+--------+ | Variable_name | Value | +-------------------------+--------+ | Qcache_free_blocks | 65 | | Qcache_free_memory | 201440 | | Qcache_hits | 18868 | | Qcache_inserts | 2940 | | Qcache_lowmem_prunes | 665 | | Qcache_not_cached | 246 | | Qcache_queries_in_cache | 492 | | Qcache_total_blocks | 1430 | +-------------------------+--------+ 8 rows in set (0.00 sec)
Ativando o arquivo de configurações
Se você quer que essas alterações continuem mesmo que o servidor MySQL seja restaurado ou após um reboot, elas precisarão ser inseridas no seu arquivo de configurações do MySQL. Vá até o diretório /etc/mysql/my.cnf e adicione as informações do Query Caching com base no que você já realizou anteriormente.
query_cache_size = 8388608 query_cache_type=1 query_cache_limit=1048576
Query caching é muito importante. É possível também monitorar seu status utilizando os métodos acima.