Agilize o seu site com o cache de consulta do MySQL
Uma das melhores maneiras de acelerar seu aplicativo da Web é ativar o armazenamento em cache de consulta no banco de dados, que armazena em cache consultas SQL geralmente usadas na memória para acesso praticamente instantâneo pela próxima página que faz a mesma solicitação.
A razão pela qual esse método é tão poderoso é que você não precisa fazer nenhuma alteração em seu aplicativo da Web, basta sacrificar um pouco de memória. Isso não vai consertar todos os seus problemas, mas definitivamente não pode machucar.
Nota: se seu aplicativo atualizar tabelas com freqüência, o cache de consultas será constantemente removido e você não obterá muito ou nenhum benefício disso. Isso é ideal para um aplicativo que faz principalmente leituras contra o banco de dados, como um blog do WordPress. Isso também não funcionará se você estiver executando em hospedagem compartilhada.
Ativar o cache com o servidor em execução
A primeira coisa que você vai querer fazer é certificar-se de que sua instalação do MySQL tenha suporte a cache de consulta disponível. A maioria das distribuições faz, mas você deve verificar de qualquer maneira.
Você vai querer executar este comando a partir do seu console MySQL, que lhe dirá se o cache de consulta está disponível.
mysql> mostra variáveis como 'have_query_cache'; + ------------------ + ------- + | Nome_variável | Valor | + ------------------ + ------- + | have_query_cache | SIM | +------------------+-------+
Não confunda isso com o significado de que o cache de consulta está realmente ativado, porque a maioria dos provedores de hospedagem não ativará isso por padrão. Curiosamente, minha instalação do Ubuntu Feisty já o habilitou…
Em seguida, precisamos verificar se o cache de consulta está ativado. Precisamos verificar mais de uma variável, então podemos fazer tudo de uma vez verificando a variável query%
mysql> mostra variáveis como 'query%'; + ------------------------------ + --------- + | Nome_variável | Valor | + ------------------------------ + --------- + | 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 | +------------------------------+---------+
Aqui estão os itens importantes da lista e o que eles significam:
- query_cache_size - Esse é o tamanho do cache em bytes. Definir este valor como 0 desativará efetivamente o cache.
- query_cache_type - Este valor deve ser ON ou 1 para que o cache de consulta seja ativado por padrão.
- query_cache_limit - Esta é a consulta de tamanho máximo (em bytes) que será armazenada em cache.
Se o valor query_cache_size estiver definido como 0 ou você desejar apenas alterá-lo, será necessário executar o seguinte comando, tendo em mente que o valor está em bytes. Por exemplo, se você quisesse alocar 8MB no cache, usaríamos 1024 * 1024 * 8 = 8388608 como valor.
SET GLOBAL query_cache_size = 8388608;
Da mesma forma, as outras opções podem ser definidas com a mesma sintaxe:
SET GLOBAL query_cache_limit = 1048576;SET GLOBALquery_cache_type
= 1;
Agora, como podemos saber se está realmente funcionando? Você pode usar o comando SHOW STATUS para puxar todas as variáveis que começam com “Qc” para dar uma olhada no que está acontecendo sob o capô..
mysql> SHOW STATUS LIKE 'Qc%'; + ------------------------- + -------- + | Nome_variável | Valor | + ------------------------- + -------- + | 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 linhas no set (0.00 seg)
Você notará nas estatísticas que tenho muita memória livre sobrando. Se o seu servidor mostrar muitas ameixas de baixa memória, talvez seja necessário aumentar esse valor, mas eu não gastaria muita memória no cache de consultas para um servidor da Web ... você precisa deixar a memória disponível para apache, php, ruby ou o que quer que você esteja usando.
Ativar no arquivo de configuração
Se você quiser que essas mudanças sobrevivam a uma reinicialização ou reinicialização do servidor mysql, você precisará adicioná-las ao seu arquivo de configuração /etc/mysql/my.cnf para o MySQL. Observe que pode estar em um local diferente na sua instalação.
Abra o arquivo usando um editor de texto no modo sudo ou raiz e, em seguida, adicione esses valores se eles já não existirem no arquivo. Se eles existem, apenas descomente-os.
query_cache_size = 268435456 query_cache_type = 1 query_cache_limit = 1048576
O cache de consulta pode melhorar significativamente a velocidade do seu aplicativo da Web, especialmente se o aplicativo fizer a maioria das leituras. Monitore o status usando os métodos acima e veja como ele funciona ao longo do tempo.