Como otimizar o tempo de resposta do MySQL
Sites com altas cargas podem demorar a responder quando um grande número de visitantes diferentes visita os sites consultando o mesmo servidor de banco de dados MySQL.
Há muitas maneiras de melhorar o tempo de resposta do MySQL: alterando o tamanho do cache, parando a resolução de DNS….
Há situações em que os servidores MySQL podem ficar lentos para responder, mas você consegue se logar na máquina, verifica que a situação está normal, a carga está ok, há poucas consultas em andamento, mas o MySQL não relatou nada sobre a sua sobrecarga.
Seguem algumas resoluções você pode tomar nestes casos:
1. Desabilitar a resolução de hostnames pelo DNS
Verifique se o MySQL está realizando muitas resoluções de DNS. Se há só maquinas locais se conectando a este banco, não há necessidade de efetuar tais resoluções.
O manual do MySQL informa que elas podem ser desabilitadas com a adição do parâmetro –skip-name-resolve.
Em sistemas baseados no Debian, como Ubuntu, Knoppix e, na maioria das distribuições, os arquivos de configuração do MySQL estão localizados em /etc/mysql/my.cnf
De forma a aplicar o parâmetro –skip-name-resolve na inicialização do mysqld, simplesmente, adicione-o na seção abaixo:
[mysqld]
…..
……
skip-name-resolve
* Importante: Quando esta opção estiver ativada, você poderá utilizar somente números IP na tabela de permissões do MySQL.
Exemplo de um benchmark com a resolução de hostname DNS habilitada
date; mysql -u root -h 192.168.1.4 ; date
Fri Jul 21 23:56:58 CEST 2006
ERROR 1130 (00000): Host ‘192.168.1.3′ is not allowed to connect to this MySQL server
Fri Jul 21 23:57:00 CEST 2006
Repare que leva em torno de 2 a 3 segundos para que o IP do cliente seja negado a se conectar.
Já com resolução de hostname DNS desabilitada:
date; mysql -u root -h 192.168.1.4 ; date
Fri Jul 21 23:56:37 CEST 2006
ERROR 1130 (00000): Host ‘192.168.1.3′ is not allowed to connect to this MySQL server
Fri Jul 21 23:56:37 CEST 2006
o servidor responde ao pedido instantaneamente.
2. Ativar a Cache de Query
A fim de aliviar a carga do servidor, verifique a memória destinada a cache das consultas:
mysql> SHOW STATUS LIKE ‘Qcache%’;
Para verificar a situação geral das variáveis de query_cache, utilize o comando:
mysql> SHOW VARIABLES LIKE ‘%query_cache%’;
Você precisa ter o cache ativado, em primeiro lugar (have_query_cache | YES) e certificar-se de que a query_cache_type está definida para ON. Ela é, normalmente, ativada por padrão na maioria das distribuições Linux.
Você pode aumentar o tamanho da cache. Ex: se você quiser aumentá-la para 50M, utilize:
mysql> SET GLOBAL query_cache_size = 52428800;
Se você desejar que esta configuração seja mantida quando restartar o MySQL, adicione as 2 linhas abaixo:
[mysqld]
…
…
query_cache_size = 52428800
query_cache_type = 1
3. Conclusão:
Após fazer essas alterações, mais consultas serão resolvidas através de cache e o servidor responderá mais rápido, porque realizará menos cálculos.
Fonte: [Debuntu]
Leia também essas notícias:
Navegue em modo texto no Linux com o Lynx
Linux Ubuntu game: America's Army
Jogos para Linux: Lunar Domination
Configuração de um servidor Fedora 8 com LAMP, Email, DNS, FTP, ISPConfig - Parte 3
Ofertas Relacionadas | Apple Iphone 3gs 16gb Desbloqueado! Mais info» R$ 1,799.00 até 18x de 134.93 | R$ 1,999.00 até 18x de 149.93 | Apple Iphone 3gs 16g Belo Horizonte Desbloqueado Original Mais info» R$ 1,890.90 até 18x de 141.82 |
---|---|---|
Vitrine TecnoBlog |
Popularity: 1% [?]
Estou escrevendo para avisá-lo de um erro no artigo, a primeira linhas que deve ser adicionada no arquivo my.cnf possui um ; que não deveria estar ali, ele faz com que o serviço do MySQL não suba.
A correção é:
[mysqld]
…
…
query_cache_size = 52428800
query_cache_type = 1
É besteira mas pode atrapalhar alguém desatento.
Mas o artigo é excelente, parabéns!
Abraços,
Henrique Navarro
Valeu mesmo já corrigi lá.