Agilize seu site com o cache de consulta do MySQL

Agilize seu site com o cache de consulta do MySQL
Agilize seu site com o cache de consulta do MySQL

Vídeo: Agilize seu site com o cache de consulta do MySQL

Vídeo: Agilize seu site com o cache de consulta do MySQL
Vídeo: La Rosa De Guadalupe - Cosas De Niñas Grandes (Parte 2/2) - YouTube 2024, Abril
Anonim

Uma das melhores maneiras de agilizar seu aplicativo da Web é habilitar o cache de consulta em seu 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 resolver todos os seus problemas, mas definitivamente não pode prejudicar.

Observação: se seu aplicativo atualizar tabelas com frequência, o cache de consultas será constantemente eliminado e você não obterá muito ou nenhum benefício com isso. 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ê deve fazer é certificar-se de que a instalação do MySQL tenha suporte a cache de consulta disponível. A maioria das distribuições, mas você deve verificar de qualquer maneira.

Você desejará executar este comando no seu console MySQL, que informará se o cache de consulta está disponível.

mysql> show variables like 'have_query_cache'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | have_query_cache | YES | +------------------+-------+

Não confunda isso com o fato 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 e ver se o cache de consulta está ativado. Precisamos verificar mais de uma variável, portanto, podemos fazer tudo de uma vez verificando a variável 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 | +------------------------------+---------+

Veja os itens importantes na lista e o que eles significam:

  • query_cache_size - Esse é o tamanho do cache em bytes. Definir esse valor como 0 desativará efetivamente o armazenamento em cache.
  • query_cache_type - Esse 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 8 MB no cache, usaríamos 1024 * 1024 * 8 = 8388608 como o 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 GLOBAL

query_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%'; +-------------------------+--------+ | 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)

Você perceberá nas estatísticas que tenho bastante memória livre sobrando. Se o seu servidor mostrar muitas ameixas de baixa memória, talvez seja necessário aumentar esse valor, mas não gastaria muita memória no cache de consultas de um servidor da Web… você precisa deixar a memória disponível para apache, php, ruby ou tudo o que você está 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 em sua instalação.

Abra o arquivo usando um editor de texto no modo sudo ou raiz e 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 faz a maioria das leituras. Monitore o status usando os métodos acima e veja como ele funciona ao longo do tempo.

Recomendado: